前言
嗨!我的名字是渡辺博文,負責LINE Notify的開發工作。在這篇文章中,我想要分享開發者如何能夠直接藉由命令列模式使用LINE Notify發送訊息到LINE。
目前要傳送系統訊息到LINE必須要有Bot API試用帳號(譯者按:目前此類型帳號已停用)或Business Connect帳號。雖然這兩者都可被Messaging API取代並提供許多重要的功能,但是它們需要比較進階的程式撰寫。
LINE Notify是一種具有特定功能的API,簡化了將訊息發送到LINE的流程。
使用cURL發送訊息
透過LINE Notify產生你自己的「personal access token」,你便能夠藉此來發送一個HTTP POST請求到API端點。在此任何可發送HTTP請求的方式皆可使用。在本文中,讓我們來看看如何使用HTTP客戶端工具cURL來完成訊息傳送。
產生personal access tokens
你可以瀏覽「個人頁面」(必須要登入LINE帳號)來產生你自己的personal tokens。
當你按下「發行權杖(Generate token)」按鈕時,會跳出一個設定畫面。在此畫面你可設定你的Token名稱,並指定要接收通知的目標。
請將你的Token取一個容易辨識的名稱。當要決定接收通知的聊天室時,選擇「透過1對1聊天接收LINE Notify的通知」就可以讓LINE Notify官方帳號向你發送訊息;而選擇某個群組則會使LINE Notify官方帳號向該群組發送訊息。
你可以針對每個Token選擇各自接收通知的聊天室。因此,為了要將訊息發送至各個聊天室,你需要針對每個聊天室產生對應的Token。
請注意,當您關掉視窗後下次開啟時系統不會再顯示你所產生的Token。因此你必須自己記錄此Token,否則只能將此Token刪除並重新產生一組新的Token。
發送通知
讓我們來試著用你在前面步驟中所拿到的personal access token發送一則訊息給自己。你可以使用下列的cURL指令來發送一則訊息。將[access_token]字串替換成你的personal access token。
curl -X POST -H 'Authorization: Bearer [access_token]' -F 'message=foobar' https://
notify-api.line.me/api/notify
- -X 是指定發出HTTP請求,例如: POST的方法
- -H 是指定發出請求的標頭資訊
- -F 是指定傳送表單資料
最後一個參數便是發送LINE Notify通知時所使用的網址。
整體說來,簡單又容易。
情境範例
前面的部分向你展示了如何輕鬆地使用cURL發送訊息。以下來看一些範例。
範例1: 發送Jenkins建構的結果
這裡是一個透過 LINE Notify 發送 Jenkins建置結果訊息給自己的範例。 我們使用Jenkins 2.0內建的Jenkinsfile,並且將使用下列的規格。
1. 發送Jenkins建置結果,如下所示。
Build {branch}, result is {result}.
{buildUrl}
2. 如果建置失敗,也發送一個饅頭人嘲笑的貼圖(我們只是想透過一個較輕鬆的範例來示意,請勿在正式環境使用)。
利用Jenkinsfile看起來真的非常簡單,但是它足以滿足我們的需求(這個範例是一個Java project,所以使用Gradle進行建置與測試)
#!groovy
node {
try {
stage 'Checkout'
checkout scm
stage 'Build and test'
sh './gradlew clean check'
currentBuild.result = 'SUCCESS'
} catch (err) {
currentBuild.result = 'FAILURE'
}
stage 'Notify'
notifyLINE('YOUR_LINE_NOTIFY_TOKEN', currentBuild.result)
}
def notifyLINE(token, result) {
def isFailure = result == 'FAILURE'
def url = 'https://notify-api.line.me/api/notify'
def message = "Build ${env.BRANCH_NAME}, result is ${result}.
${env.BUILD_URL}"
def imageThumbnail = isFailure ? 'FAILED_IMAGE_THUMBNAIL' : ''
def imageFullsize = isFailure ? 'FAILED_IMAGE_FULLSIZE' : ''
sh "curl ${url} -H 'Authorization: Bearer ${token}' -F 'message=${message}'
-F 'imageThumbnail=${imageThumbnail}' -F 'imageFullsize=${imageFullsize}'"
}
透過上述的設定,當建置成功時,你將看到如下的訊息。
如果建置失敗,你將收到如下的訊息…
簡單吧?
範例2: 使用sl指令
當你誤把「ls」拼成「sl」時,sl指令就會被執行。這個指令會停止所有的工作,直到你修正這個拼字錯誤。其實它真正的名字是:一旦這個指令被執行,你會看到一個SL(steam locomotive;蒸汽火車頭)通過你的終端機螢幕。
我們來利用LINE Notify做出一個SL通過LINE螢幕的效果。將以下的shell script存為一個名為「sl」的執行擋,你就能利用LINE Notify製造出SL通過LINE螢幕的效果(必須要先設定好access token與圖片的URL。以下的範例是假設你使用zsh,因此會用到.zsh_history檔案)。
#!/bin/sh
ACCESS_TOKEN=...
COUNT=$(echo $(perl -lan -e 's/^.+;| .+//g and /^sl$/ and print' ~/.zsh_history | wc -l))
for n in 1 4 8; do
echo "Choo choo"
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -F "message=SL coming
through (Total: $COUNT)" -F "imageThumbnail=https://url-to-sl/$n.jpg" -F
"imageFullsize=https://url-to-sl/$n.jpg" https://notify-api.line.me/api/notify >
/dev/null
sleep 1
done
執行後,你將會看到如下的畫面。
容易吧。
註冊服務
現在在閱讀這篇文章的人當中,可能有一些是負責網站服務的開發者。LINE Notify支援用於網站服務提供者OAuth的API,你可以使用這個API輕鬆地撰寫發送訊息給LINE上特定用戶的服務。
你可以在development document獲得更多的細節資訊(必須要登入LINE帳號)。
結語
閱讀這篇文章後,你應該能夠使用LINE Notify發送訊息到LINE。建議你可以試試看喔。Review