昨天已經先教大家建立完LINE Notify所需要的權杖後,今天換來處理odoo這邊如何跟LINE做串接的部分讓我們直接進入正題吧。
這邊以創建單據時,會自動推播LINE Notify進行通知為例,範例如下:
import requests
@api.model
def create(self, vals):
result = super(IDXRepair, self).create(vals)
# 組推播訊息內容
msg = '有新的單據建立,請確認'
# 組新單據的網址
web_base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
menu_id = self.env.ref('odoo14_idx_repair.idx_repair', raise_if_not_found=False)
action_id = self.env.ref('odoo14_idx_repair.action_idx_repair', raise_if_not_found=False)
url = """{}/web#id={}&action={}&view_type=form""".format(
web_base_url,
result.id,
action_id.id)
msg = msg + ' \n ' + url
self._lineNotifyMessage(msg)
# line推播
def _lineNotifyMessage(self, msg):
token = self.env['ir.config_parameter'].sudo().search([('key', '=', 'odoo14_idx_repair.line_notification_char')]).value
headers = {
"Authorization": "Bearer " + token,
"Content-Type": "application/x-www-form-urlencoded"
}
payload = {'message': msg}
requests.post("https://notify-api.line.me/api/notify", headers=headers, params=payload)
以範例來一一說明:
一開始要先import requests,requests是用來發送HTTP請求的函式庫,因為在推播通知時,會使用到requests中post,所以要先import。
msg中可以自由組成需要的訊息內容,這邊就先以簡單的文字來呈現,實際運用時可以動態組需要的資料進去推播訊息裡。
我希望有網址能夠讓我快速連結此張單據,所以在這邊組單據的網址,一起推播到LINE上,實際運用時就可像這樣動態來組訊息內容。
需要的訊息組好後,便可以準備推播訊息的部分。
前一天的文章中申請了LINE Notify的token,為了安全而避免將token直接寫在程式中,可將token存於系統參數中,要使用時再取出。headers
及payload
用來設置HTTP的參數與資料,設置好之後以requests發送POST請求,就會在LINE上面收到推播的訊息,如圖。
odoo與LINE Notify的串接就先解講到這邊,讓我們明天見。