AD

2020-02-15

Python + Flask 處理 Mattermost incoming/outgoing hook 和 slash command

Incoming Webhooks


在側邊欄找到 Integrations > Incoming Webhooks > Add Incoming Webhook,
填入 Title、Description 並選擇 Channel 後按 save,

就會獲得一串 URL 類似:https://mattermost.your.domain/hooks/xxxxtokenxxxx

最簡單的 Incoming Webhooks 範例:


data 要 json.dumps 沒注意會遇到像下面的錯誤:

{"id":"model.incoming_hook.parse_data.app_error","message":"Unable to parse incoming data","detailed_error":"","request_id":"xxxxxxxxx","status_code":400}

或是 import slackweb:


Outgoing Webhooks


在側邊欄找到 Integrations > Incoming Webhooks > Add Outgoing Webhook,
填入 Title、Description、選擇 Content Type(推薦選擇 application/json)、
Trigger Words(觸發的關鍵詞)、選擇 Trigger When(推薦 First word matches a trigger word exactly)、最後填入Callback URLs 後按 save。

簡單的 Outgoing Webhooks 範例:



執行上面的 code 之後,127.0.0.1:8888 就會出現 'Home Page' 了。
Outgoing Webhook 只要去 post 我們設定的 127.0.0.1:8888/mattermose 就行了。

但 Outgoing Webhooks 需要 public ip,這部分可以用看看 ngrok,裝了 ngrok 之後下command:
ngrok http 8888

就會有的 public URL,像這樣:
Forwarding http://xxxxxx.ngrok.io -> http://localhost:8888
Forwarding https://xxxxxx.ngrok.io -> http://localhost:8888


上面範例中的 Callback URL 填入 xxxxxx.ngrok.io/mattermost 就可以了。

Slash Command


在側邊欄找到 Integrations > Slash Commands > Add Slash Command,
填入 Title、Description、Command Trigger Word、Request URL、Request Method、Response Username、Response Icon(不填就是預設)、可以打勾 Autocomplete(能自動補完 command),最後按 save。

Slash command 有點類似 Outgoing Webhooks,Request URL 就是一樣去 post 我們設定的 127.0.0.1:8888/mattermose:
(下面的 code 同 Outgoing Webhooks)


使用 Slash Command 就是在 Trigger Word 前加 slash: '/yourtriggerword'

這時如果出現錯誤:
command with a trigger of ‘xxxx’ failed
可以試試允許使用 localhost:
側邊欄 > System Console > Developer 在 Allow untrusted internal connections to 中填入 localhost。

但我允許後還是不行,這時一樣可以用 ngrok。

沒有留言:

張貼留言

如果文章有幫助到你可以在 LikeCoin 上幫我拍手喔