Line Messaging API 串接笔记-Receiving Message & Sending Repl

前言

目标:掌握 Line Messaging API,客製自动回覆功能,这次串接是参考 Line Messaging API 串接手册
Channel 设定跟 Access token 都好了之后,就可以来玩玩 Line Messaging API
Line Messaging API 串接需要了解两个部分:

接收讯息或动作( ex. 加入好友) - 接收 Line 传给你的 webhook event object发送讯息 - 透过 API 传讯息到 Line

接收讯息或动作 - Webhook event object

Receiving messages (webhooks) 这篇有写,如果有人家好友或是传讯息到这个 Line 官方帐号,LINE 会用 HTTP POST 的方式传送 webhook event object 到你在 LINE Developers Console(Channel) 的 Webhook URL 填写的网址。

Webhook event
http://img2.58codes.com/2024/20136310LA8ff9ZyyY.jpg
图片来源:https://developers.line.biz/en/docs/messaging-api/receiving-messages/#webhook-event-in-one-on-one-talk-or-group-chat

几个比较基本的

Message Event:只要有人发讯息给官方帐号,不管是个人或是群组都会收到,cx 有人发了 「你好」,收到的 event object 就会有 「你好」,就可以再透过「你好」这个讯息来做一些判断了~Follow Event:加入官方帐号好友Join Event:加入有官方帐号在的群组

有了 event object 之后,你就可以透过 event object 的资讯来决定要发送怎样的讯息到 Line


发送讯息 - Sending Message

发送讯息依发送的方式有两种,一个被动发送(Send reply message)、一个是主动发送(Send push message),两者的差别在于「被动发送」一定是要先有人发送讯息(或其他动作)给你,然后会收到 replyToken,再透过 replyToken 回讯息给他,「主动发送」则不用 replyToken 就可以发送讯息。

Send push message 如果达到上限则数就不能再发送,除非加购增加则数,一个群组里面的人数有多少,一则讯息就会乘上群组人数计算(ex. 如果官方帐号所在群组有 10 个人在里面,假设这个月他发 5 则讯息, LINE Push 计算的则数会是 10*5= 50 则,所以人数越多,越快达到 500 则上限

Send reply message

格式application/jsonURLhttps://api.line.me/v2/bot/message/reply请求方式POSTAuthorizationBearer {channel access token}

Body 参数:

参数类型说明replyTokenstringwebhook event 传给你的 replyTokenmessagesobj要传送的讯息 (最多 5 则)

以 PHP 为例

<?php //设定Token $ChannelAccessToken = '你的 Channel access token...';  // 我用 long-lived// get message event 接受 webhook 用的$HttpRequestBody = file_get_contents('php://input'); $data = json_decode($HttpRequestBody, true);foreach($data as $value){if(is_array($value)){foreach($value as $events){               extract($events); // 取出 object 里的 key value}}}$Payload = '{    "replyToken":"'.$replyToken.'", //webhook event object 里的 event object    "messages":[        {            "type":"text",            "text":"Hello, user"        },        {            "type":"text",            "text":"May I help you?"        }    ]}';$ChannelAccessToken = "你的 Channel Access Token....";// 我用的是 long-lived$ch = curl_init();    curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/bot/message/reply');    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    curl_setopt($ch, CURLOPT_POSTFIELDS, $Payload);    curl_setopt($ch, CURLOPT_HTTPHEADER, [      'Content-Type: application/json',      'Authorization: Bearer ' . $ChannelAccessToken  ]);  $Result = curl_exec($ch);  curl_close($ch);?>

发出讯息的讯息会长这样
http://img2.58codes.com/2024/20136310rpDDF4bFlW.jpg

这样就成功用 Line Messaging API 发出 reply message

参考资料

Send reply message
Receiving messages (webhooks)


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章