Line Bot(Message API)、Line login、Line notify

最近需建立一個 line bot ,並要能對單一使用者推播訊息

Line Message API(line)

這個主題分成 2 塊,一個是單純從 business.line 去設定,另一個是 掛(hook) web api 去處理。
申請完成後,會有一個官方聊天室

L[email protected] 進入管理畫面,從 UI 可以達成以下功能
  • 設定 Line 官網畫面、基本資料
  • 貼投稿(類似 post/blog),免費版每天3篇
  • 可建立活動、優惠券、調查等
  • 發訊息
    • 加入時的歡迎訊息
    • 特定時間推訊息到頻道
    • 針對關鍵字回應訊息
    • 沒有命中關鍵字的預設訊息
  • 觀看好友數量(開發版只有 50人)
  • 看統計(瀏覽、訪客、按讚、留言、分享數)
  • 圖文選單
    • 兩種形式,一種按鈕用自己做的圖片,另一種直接用 icon + 文字
    • 動作(關鍵字):需與"關鍵字回覆"功能,一起用
    • 動作(網址):在 Line popup 一個 webview
    • 動作(文字):隨意字串,寫 web hook api 會用到
    • 文字相關的動作,會模擬 user 輸入訊息,再觸發關聯動作
  • 啟動 Message API

Message API 使用時須將"自動回應" 關閉。
在 user 發送訊息到 line 時,因為不需自動回應,文字會直接拋到 hook 的 web api,
程式必須去判斷關鍵字,發送各種 Message 給 user,各種 type

註冊完 Message API,會得到 Channel ID(沒用處)、Channel Secret,必須再去取得 Channel access token,才能使用 sdk

Webhook URL,規定只能用 HTTPS,推薦用 Heroku 或 Cloudflare 免費 SSL。
這邊串通需要花些時間


web api 發送動作有
  • reply 回覆:需有 reply_token,每次 request 時都會帶進來,在 body->events[0~n]->replyToken
  • push 發給1位:需有 user 的 id
  • multicast 發給多位:需有 user 的 id

範例

Line Login

  1. developers.line 註冊 login,記住 Channel ID
  2. 設定 Callback URL,不一定要 https
  3. 下載 login 用的 button 圖片 (link)
  4. html 插入圖片後,給一個超連結到 access.line
  5. https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=剛剛的ChannelID&redirect_uri=剛剛設定的Callback網址&scope=openid%20profile&nonce=隨意亂數
取得 Profile
  1. 似乎沒有 SDK,請先了解 curl https
  2. 先取得 Access Token,用 POST 打 https://api.line.me/oauth2/v2.1/token(官方文獻)
    1. code 為剛剛 login 回傳的資料
  3. 再取得 Profile,用 GET 取 https://api.line.me/v2/profile (官方文獻)
    1. 剛 token api 回傳的 access token 帶在 header
  4. 相關欄位(link),建議將 profile 中的 user_id 存在資料庫中

Line Notify

這個服務免費,無發送限制,可以指定1對1(發送到LINE Notify聊天室),或直接發到群組。 可以拿來當作 service error alarm
  1. 登錄服務,指定 CallbackUrl(可先隨意,後面再改),服務名稱到時候會出現在每一個 notify 前面
    1. ex. 【myservice】hello world
  2. 做法類似 Line login,在 html 放一張圖,設定超連結
  3. https://notify-bot.line.me/oauth/authorize?response_type=code&client_id=line的notifyID&state=亂數&redirect_uri=Callback網址&scope=notify
    1. 注意,連動的服務,同一個能關聯N次,並非覆蓋
    2. 一般要收推播的,只需要加入群組即可,不用按此按鈕
  4. 先取得 Access Token,用 POST 打 https://notify-bot.line.me/oauth/token (官方文獻)
  5. 用 POST 發送 https://notify-api.line.me/api/notify (官方文獻)

狀況

  • 目前 business.line 沒辦法開啟 web hook,需到 developers.line 開
  • 有圖片的 template,必須是 https,不然可能無法顯示訊息
  • 含圖片的 template,因為要爬幫圖片,第一次會較慢


參考

Line Bot(Message API)、Line login、Line notify Line Bot(Message API)、Line login、Line notify Reviewed by Wild on 10/16/2017 02:52:00 下午 Rating: 5

沒有留言:

沒有Google帳號也可發表意見唷!

技術提供:Blogger.