Line機器人與自動發話給特定使用者

2021.12.22 更新程式原始碼分享連結

有鑑於資料庫的Monitor程式,是自己hard coding做成的,
所以一直都是使用Email來進行ALERT的通知,
但Email怎麼樣都會比較慢看到(其實是最近發現自己寫的偵測程式的Email好像寄不出去 TwT)
上班也不太可能一直盯著monitor看。

最近想到LINE之前似乎推出了API,網路上也有不少範例可看,
所以最近就利用下班的時間,稍微看了一下怎麼寫golang
(因為這是唯一我直接部署到Server就能成功使用的XD)
然後修改別人做好的範本,再進行加工,
讓他從原本的自動回話(Reply),
變成可以透過特定管道(push)發送訊息XD

基本上是大多是依照這篇去進行設定
https://www.evanlin.com/create-your-line-bot-golang/
因為是自己另外寫的小工具,Server就照原作者的方式,
先使用Heroku所提供的IaaS服務
這篇總共分為4個步驟
1. 註冊機器人帳號
2. Deploy LINE BOT程式到heroku上
3. 到LINE Bot Dashboard設定參數
4. 到Heroku上設定參數
直接使用程式碼的話應該也是可行啦...(從沒自己架過Web Server的人)

再改寫面遇到比較麻煩的大概是,
因為用途並不是單純回話,
而是要讓這機器人能夠發話給特定的好友
必須要做的事情是取得User ID
(這裡的ID不是我們在Line上面看到的User ID,而是真正每個人獨立的unique id)
而唯一取得方式又只能透過Line的Reply
然後LINE一次又只能監聽一個webhook >_>
所以想到了把兩個Function合併,讓Server自己去判斷該回話還是發呆XD

所以程式及LINE都部署及設定好後可以這樣使用

1.
就是個Hello World! XD


2.
加入機器人帳號好友後,送個訊息給他,
可以取得自己的User ID (也可以建立群組邀他,這樣就能取得群組ID)

3.
到InputMsg頁面中,填入剛剛取得的User ID (群組ID也行),
以及想送的訊息,按下Submit後,
就會看到機器人傳訊息給你囉!




4. 直接透過http get,把參數傳到Server端,讓機器人直接送訊息給特定LINE USER

如此一來,只要其他程式能夠使用html的get功能,

就把我要傳送的訊息傳送出去囉~

附上打包好的程式

留言

  1. 你好,請問一下,為什麼我做完之後,可以透過網頁發送訊息,但是不會自動回復line,我看了heroku的log
    2019-08-28T14:47:03.981318+00:00 heroku[router]: at=info method=POST path="/callback" host=chgs2.herokuapp.com request_id=f81b2ea5-e7f7-4001-9d12-dee83a266228 fwd="147.92.149.165" dyno=web.1 connect=0ms service=2ms status=200 bytes=151 protocol=https
    2019-08-28T14:47:03.979793+00:00 app[web.1]: map[]
    2019-08-28T14:47:03.979808+00:00 app[web.1]: path /callback
    2019-08-28T14:47:03.979810+00:00 app[web.1]: scheme
    2019-08-28T14:47:03.979812+00:00 app[web.1]: []
    似乎是因為line的sdk有修改過
    但是不知道要如何修改
    謝謝

    回覆刪除
  2. Line api 後台有做webhook設定嗎?

    回覆刪除
  3. 您好,我本身沒有在寫程式,昨天開始嘗試設置群組機器人,並想透過google月曆固定於每周的特定時間發送提醒訊息到群組。由於傳訊息到群組需要有群組ID,找到您的網誌。依照步驟將您所寫的程式碼發佈到HEROKU後,open app有成功出現網頁Hello world。HEROKU的setting有設定了channel secret和token,LINE API也有設定Webhook的callback,但加入聊天機器人之後,輸入訊息他都不會回傳聊天者的ID,只會一直說 感謝您的訊息!很抱歉本帳號無法個別回復(略)。

    想請教您我該怎麼處理呢?謝謝。

    回覆刪除

張貼留言

熱門文章