iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
Odoo

Odoo開發系列 第 24

[Day24] odoo14 - odoo與LINE Notify串接(二)

  • 分享至 

  • xImage
  •  

昨天已經先教大家建立完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存於系統參數中,要使用時再取出。
headerspayload用來設置HTTP的參數與資料,設置好之後以requests發送POST請求,就會在LINE上面收到推播的訊息,如圖。
https://ithelp.ithome.com.tw/upload/images/20231007/201632631YVDvwCE5L.png

odoo與LINE Notify的串接就先解講到這邊,讓我們明天見。


上一篇
[Day23] odoo14 - odoo與LINE Notify串接(一)
下一篇
[Day25] odoo14 - 新增翻譯檔
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言