介绍
组织 LINE Bot 生产的常用代码和参考站点。 (不时更新)
关联
LINE Bot完成概要
LINE 开发者帐户、提供商、频道已创建、Google 帐户已创建。 (开始使用消息 API | LINE 开发人员)
获取频道访问令牌
LINE 开发者控制台打开“消息传递 API”选项卡。点击“Channel access token (long-lived)”的“Issue”,复制key并记下。 (设置属性(环境变量)用于)
创建 Google Apps 脚本
谷歌云端硬盘右键单击我的驱动器 -> 其他 -> 选择 Google Apps 脚本
创建 .gs 文件
代码示例:Github
部署
选择部署 -> 新部署
选择“Web App”作为类型
允许访问“所有人”
复制网址
每次修改代码时,都需要通过“部署→管理部署→编辑(铅笔图标)”将版本设置为“新版本”并部署。
配置 webhook URL
LINE 开发者控制台打开“消息 API”选项卡。将复制的 URL 设置为 Webhook URL开启“使用 webhook”至
设置属性(环境变量)
将访问令牌设置为环境变量
运行时设置环境变量(运行后删除代码)
const SCRIPT_PROPERTIES = PropertiesService.getScriptProperties(); // スクリプトプロパティを取得
SCRIPT_PROPERTIES.setProperty("ACCESS_TOKEN", "ここにアクセストークンを入力");
获取访问令牌
const SCRIPT_PROPERTIES = PropertiesService.getScriptProperties();
const ACCESS_TOKEN = SCRIPT_PROPERTIES.getProperty("ACCESS_TOKEN");
接收事件
// イベントを受け取って実行する
function doPost(e){
const EVENTS = JSON.parse(e.postData.contents).events;
for (const event of EVENTS){
execute(event);
}
}
// イベントを実行する
function execute(event){
const EVENT_TYPE = event.type; // イベントのタイプ
const USER_ID = event.source.userId; // 送信元ユーザーのID
const REPLY_TOKEN = event.replyToken; // 応答メッセージを送る際に使用する応答トークン
if(EVENT_TYPE === "follow"){ // フォローイベントの場合
}
else if(EVENT_TYPE === "message"){ // メッセージイベントの場合
if(event.message.type === "text"){ // テキストメッセージの場合
let text = event.message.text; // 受け取ったテキスト
}
}
else if(EVENT_TYPE === "postback"){ // ポストバックイベントの場合
const PB_DATA = event.postback.data; // ポストバックデータ
}
}
发信息
/*
ACCESS_TOKEN: アクセストークン
messages: メッセージオブジェクトの配列(最大件数:5)
*/
function sendReplyMessage(replyToken, messages){
const URL = "https://api.line.me/v2/bot/message/reply";
const RES = UrlFetchApp.fetch(URL, {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + ACCESS_TOKEN,
},
"method": "post",
"payload": JSON.stringify({
"replyToken": replyToken,
"messages": messages
}),
});
return RES;
}
发送消息 | LINE 开发者
发送响应消息 | 消息 API 参考
消息对象
获取短信
function getTextMsg(text){
return {
"type": "text",
"text": text
};
}
获取图片消息
function getImgMsg(url, preUrl){
return {
"type": "image",
"originalContentUrl": url,
"previewImageUrl": preUrl
};
}
获取弹性消息
function getFlexMsg(label, content){
return {
"type": "flex",
"altText": label,
"contents": content
};
}
使用消息公共属性获取消息
示例 1:快速回复短信
/*
QUICK_REPLY: itemsオブジェクト
*/
function getTextMsgQr(text){
return {
"type": "text",
"text": text,
"quickReply": QUICK_REPLY
};
}
QUICK_REPLY 示例
/*
items: クイックリプライボタンオブジェクト(最大オブジェクト数:13)
*/
const QUICK_REPLY = {
"items": [
{
"type": "action",
"action": {
"type": "message",
"label": "Yes",
"text": "Yes"
}
},
{
"type": "action",
"action": {
"type": "postback",
"label": "Buy",
"data": "action=buy&itemid=111",
"displayText": "Buy",
"inputOption": "openKeyboard",
"fillInText": "---
Name:
Phone:
Birthday:
---"
}
},
{
"type": "action",
"imageUrl": "https://line.me/menu",
"action": {
"type": "uri",
"label": "メニューを見る",
"uri": "https://example.com/menu"
}
}
]
};
使用快速回复 | LINE 开发者
快速回复 | 消息 API 参考
快速回复按钮对象 | 消息 API 参考
示例 2:获取带有图标和显示名称更改的文本消息
function getTextMsgChangeSender(text, name, iconUrl){
return {
"type": "text",
"text": text,
"sender": {
"name": name,
"iconUrl": iconUrl
}
};
}
电子表格链接
待添加
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308630660.html