在[Mattermost 教學#7] Mattermost的OAuth 2.0應用程式整合的操作步驟提及Mattermost有四種整合方法:傳入的網站的Webhook(網路掛接)、傳出的Webhooks、斜線命令和OAuth 2.0應用程式,而由我們應用程式「餵」給Mattermost的最簡單作法就是Incoming Webhooks了。以下是操作傳入網站掛接的步驟。
1. 建立傳入掛接
由主選單【整合】→點擊【傳入的Webhook】,再按右上方的【增加傳入的Webhook】,依序填入欄位資料。範例中傳入的訊息預設會輸出到公眾大廳(Town-square)。
按〔儲存〕後將此網路掛接的網址複製起來,這個網址就是我們要傳入訊息的對象。
2. 撰寫傳送訊息的程式
接著就是寫支傳送訊息的程式來測試看看。程式很簡單,隨便看看都能懂。回應的格式是JSON:{"text": "要顯示在頻道上的訊息"}
package com.company.test; import java.io.DataOutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; /** * Test for sending message to http://localhost:8065/hooks/d1e6r6z8tfbnxnwfa4bhcdsjpo. * * @version Jerry 2018-05-10 22:24 */ public class TestIncoming { private static HttpURLConnection con; public static void main(String[] args) throws Exception { try { // 1. 建立連線 String myWebhook = "http://localhost:8065/hooks/d1e6r6z8tfbnxnwfa4bhcdsjpo"; URL url = new URL(myWebhook); URLConnection urlConnection = url.openConnection(); con = (HttpURLConnection) urlConnection; con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); // 2. 送出訊息 //language=JSON String msg = "{\"text\":\"Incoming Webhook 測試\"}"; DataOutputStream _oDataOutput = new DataOutputStream(con.getOutputStream()); byte[] bytes = msg.getBytes("UTF-8"); _oDataOutput.write(bytes); // 3. 查看結果 int code = con.getResponseCode(); if (code != 200) { System.out.println("Error " + code + " " + con.getResponseMessage()); } } catch (Exception e) { e.printStackTrace(); } finally { con.disconnect(); } } }
輸出結果如下:
3. 增加額外的輸出
輸出的JSON可以再加上額外的欄位,讓輸出呈現不同的樣貌。
- icon_url: 變更預設的圖示網址
- username: 變更設定的使用者名稱,由設定的incoming-message變更為指定的名稱
- channel: 變更輸出的頻道,要輸出給某個用戶則用「@用戶名稱」
以下把msg變數修改為額外欄位:
String msg = "{\"text\":\"Incoming Webhook 測試\", \n" + " \"icon_url\": \"http://localhost:8065/static/emoji/1f61c.png\", \n" + " \"username\":\"傳入的掛接\",\n" + " \"channel\": \"off-topic\"\n" + "}";
訊息輸出到指定的閒聊(off-topic)頻道:
4. 使用附件格式
如果想要輸出更多格式,則可以再指訊息附件(attachments)欄位,attachments是個陣列,其內欄位定義可參考Message Attachments — Mattermost 4.10 documentation,範例如下;幾個欄位說明如下:
- fallback: 彙總訊息的文字
- color: 垂直的側邊條顏色
- pretext: 附件之前的文字
String msg = "{\n" + " \"text\": \"Incoming Webhook 測試\",\n" + " \"icon_url\": \"http://localhost:8065/static/emoji/1f61c.png\",\n" + " \"username\": \"傳入的掛接\",\n" + " \"channel\": \"off-topic\",\n" + " \"attachments\": [\n" + " {\n" + "\"fallback\": \"訊息識別\",\n" + "\"color\": \"#ff0000\",\n" + "\"pretext\": \"pretext: 先導文字\",\n" + "\"author_name\": \"作者名稱\",\n" + "\"author_icon\": \"http://localhost:8065/static/emoji/1f61c.png\",\n" + "\"author_link\": \"http://jdev.tw/blog\",\n" + "\"title\": \"title: [分享] 濱野純訪談:為什麼 Google 接管開發 Git 2.0 了?\",\n" + "\"title_link\": \"http://jdev.tw/blog/5359/hamano-interview-git-2-0\",\n" + "\"text\": \"text: 訊息內容\",\n" + "\"image_url\": \"http://jdev.tw/blog/wp-content/uploads/2014/09/git-logo.png\",\n" + "\"fields\": [\n" + " {\n" + " \"short\": false,\n" + " \"title\": \"長格式欄位\",\n" + " \"value\": \"導讀:最近 Google 推出了 Git 協議的 2.0 版。\" \n" + " },\n" + " {\n" + " \"short\": true,\n" + " \"title\": \"短格式欄位1\",\n" + " \"value\": \"短格式欄位1的內容描述\" \n" + " },\n" + " {\n" + " \"short\": true,\n" + " \"title\": \"短格式欄位2\",\n" + " \"value\": \"短格式欄位2的內容描述\" \n" + " },\n" + " {\n" + " \"short\": true,\n" + " \"title\": \"短格式欄位3\",\n" + " \"value\": \"短格式欄位3的內容描述\" \n" + " }\n" + "]\n" + " }\n" + " ]\n" + "}";
附件還可以再加上actions欄位來定義互動式按鈕(Interactive Message Buttons),請待下回分解。
##
您可能也會有興趣的類似文章
- [Mattermost 教學#7] Mattermost的OAuth 2.0應用程式整合的操作步驟 (0則留言, 2018/04/22)
- [Mattermost 教學#1] 團隊溝通工具Mattermost的Windows安裝指引 (0則留言, 2018/04/07)
- [Mattermost 教學#5] 方便的斜線命令與AutoHotkey (0則留言, 2018/04/17)
- [Mattermost 教學#4] Mattermost的快捷鍵 (0則留言, 2018/04/16)
- [Mattermost 教學#2] 系統控制台與帳號設定 (0則留言, 2018/04/08)
- [Mattermost 教學#3] 頁面樣式與訊息操作 (0則留言, 2018/04/08)
- [Mattermost 教學#6] Mattermost 桌面應用程式使用說明 (0則留言, 2018/04/19)
- 簡聊:適合團隊協同工作的即時通訊工具 (0則留言, 2015/02/02)
- 以Scribe-java實作Google OAuth 2.0的認證機制 (0則留言, 2013/02/19)
- 撰寫API規格文件的利器:API Blueprint與aglio (2則留言, 2016/12/14)
- Servlet 3.0的檔案上傳寫法 (2則留言, 2012/06/19)
- 第3個jqGrid範例: XML與XML STRING格式 (2則留言, 2010/02/14)
- [iReport] 兩個文字元件:Static Text與Text Field (0則留言, 2005/04/15)
- Ajax的跨網域處理-使用jQuery與JSP (0則留言, 2016/02/17)
- [Android Studio #2] 操作資源XML檔 (0則留言, 2013/10/03)