#72 [解決済み]mattermostへのwebhook連携について

  使い方  [Public]
icon written by ststake at Apr 25, 2018 3:23 PM ( icon updated by ststake at Apr 25, 2018 7:24 PM <History> )
  Edit(Sign in)
  Stock
  Answer survey   Answer survey

  TOC

結論

mattermost連携の場合、WebHook設定画面のTestHookでは動作確認できません。
pandaさんのコメントを参考にjsonをカスタマイズしてください。実際に動いているかはmattermost側のログには内向きウェブフック受信のログが出ているのでその内容をみて対応してください。

問い合わせ内容

今週から社内にknowledgeを導入しています。
チャットツールとしてはmattermostを導入しており、knowledgeに投稿した内容をwebhook連携で
mattermostへ通知したいと思っております。

mattermost側で内向きwebhookの設定を有効化し、そこで発行されたURLをknowledge側の「WebHook設定」
に設定しています。
設定後にTest hookボタンを押して確認すると「Webhookのテスト送信に成功しました」と出力されるのですが
mattermost側には何も出力されません。
mattermost連携されている方がいらっしゃいましたら設定方法等を教えていただけないでしょうか?

当初は設定ミス等を疑ったのですが、knowledgeサーバから curl でmattermostの内向きwebhookが動くことと、slackへの内向きWebhookは問題なく連携できたので何かmattermost用の設定があるのかなと思っています。

バージョン情報

  • knowledge: v1.12.0(実際はdockerhubの koda/docker-knowledge を使ってます)

ログ

Test hookボタンを押したときに以下のログが出力されていましたが500エラーの詳細がどこで参照できるか分かりませんでした。。

knowledge      | ERROR 2018-04-25 05:13:49,921 WebhookLogic(201) Request failed: statusCode -> 500
knowledge      |  INFO 2018-04-25 05:13:49,944 LoggingFilter(101) POST  https://example.com/admin.webhook/test 200     xx.xx.xx.xx    88[ms]
knowledge      |  INFO 2018-04-25 05:13:50,017 LoggingFilter(101) GET   https://example.com/open.account/icon/5        200     xx.xx.xx.xx    29[ms]

 Attach Files     - [0]


 Comment
[Registration] Apr 25, 2018 4:33 PM [panda]
icon

knowledgeとmattermostの連携については、初期で設定されているjsonがslack用なので、mattermost用に書き換えなければなりません。
私が使っているjsonを記載しますね。参考にしていただければと思います。
(1) ナレッジイベント

{
    "channel": "knowledge",
    "username": "knowledge",
    "icon_url": "http://<knowledgeをホストしているサーバ>/knowledge/favicon.ico",
    "text": "<{knowledge.link}|{knowledge.title}>",
    "attachments": [
     {
      "fallback": "<{knowledge.link}|{knowledge.title}>",
      "title": "{knowledge.title}",
      "title_link": "{knowledge.link}",
      "color": "#808080",
      "fields": [
       {
        "title": "作成日時",
        "value": "{knowledge.insertDatetime,format=yyyy/MM/dd HH:mm:ss.SSSZ}",
        "short": true
       },
       {
        "title": "作成者",
        "value": "{knowledge.insertUserName}",
        "short": true
       },
       {
        "title": "更新日時",
        "value": "{knowledge.updateDatetime,format=yyyy/MM/dd HH:mm:ss.SSSZ}",
        "short": true
       },
       {
        "title": "更新者",
        "value": "{knowledge.updateUserName}",
        "short": true
       },
       {
        "title": "投稿グループ",
        "value": "{knowledge.groups}",
        "short": true
       },
       {
        "title": "タグ",
        "value": "{knowledge.tags}",
        "short": true
       },
       {
        "title": "コンテンツ",
        "value": "{knowledge.content}",
        "short": true
       }
      ]
     }
    ]
}

(2) コメントイベント

{
    "channel": "knowledge",
    "username": "knowledge",
    "icon_url": "http://<knowledgeをホストしているサーバ>/knowledge/favicon.ico",
    "text": "<{knowledge.link}|{knowledge.title}>へのコメント",
    "attachments": [
     {
      "fallback": "<{knowledge.link}|{knowledge.title}>へのコメント",
      "title": "{knowledge.title}へのコメント",
      "title_link": "{knowledge.link}",
      "color": "#808080",
      "fields": [
       {
        "title": "コメント書込日時",
        "value": "{comment.insertDatetime,format=yyyy/MM/dd HH:mm:ss.SSSZ}",
        "short": true
       },
       {
        "title": "コメント書込者",
        "value": "{comment.insertUserName}",
        "short": true
       },
       {
        "title": "コメント更新日時",
        "value": "{comment.updateDatetime,format=yyyy/MM/dd HH:mm:ss.SSSZ}",
        "short": true
       },
       {
        "title": "コメント更新者",
        "value": "{comment.updateUserName}",
        "short": true
       },
       {
        "title": "コメントNo",
        "value": "{comment.commentNo}",
        "short": true
       },
       {
        "title": "投稿グループ",
        "value": "{knowledge.groups}",
        "short": true
       },
       {
        "title": "コンテンツ",
        "value": "{comment.comment}",
        "short": true
       }
      ]
     }
    ]
}

 Like! × 2  
Collapsed
[Registration] Apr 25, 2018 6:37 PM [ststake]
icon

回答ありがとうございます。
mattermost側のログを見たらhookはちゃんと実行されて到達していることが分かりました。
が、Testhook時に送信されるjsonがtype : "knowledge"となっているため、不正でエラーError creating post [details: err=Invalid type]となってました。
上記を参考にjsonを修正したいと思います。


 Like! × 0  
Collapsed
[Registration] Apr 25, 2018 7:19 PM [ststake]
icon

解決しました!チャンネルとかユーザ名を入れるとうまくいかったりしたんですが、これはmattermost側で上書き許可してなかったりするためだと思います。
pandaさんありがとうございました。


 Like! × 0  
Collapsed



 Add Comment