昨天寫的怎麼創建機器人,如果想讓機器人有一定的實用價值,還是要進行編程的。
今天所說的是使用谷歌的腳本服務,部署腳本服務通過webhook與Telegram的機器人連接完成,機器人的響應。
Telegram可以使用外部的任何服務,也包括一些智能機器人不錯的接口。
廢話不多說了,開始
1、首先要有一個谷歌賬號,很有用的,搞一個吧。另外,就是要有JavaScript基礎。
2、然後google搜索 Google Apps Script 進入在線腳本編程。
或者點擊 https://www.google.com/script/start/
然後 “Start Scripting”-->"新建腳本"
3、添加如下代碼
function doGet(e){
return HtmlService.createHtmlOutput("你好,我是一個新的機器人服務請求!");
}
function doPost(e){
var dataFromTelegram = {
"method": "post",
"payload": e.postData.contents
}
//講請求數據的內容不符 轉JSON對象
var body = JSON.parse(e.postData.contents);
//轉爲字符型
body.message.chat.id = body.message.chat.id + '';
//處理請求內容和返回結果
var payload = preparePayload(body);
//這是 數據格式
var data = {
"method": "post",
"payload": payload
}
//調用跳轉接口,把結果返回給對應Token的Telegram機器人
UrlFetchApp.fetch("https://api.telegram.org/bot627711111117:ADAxxxxxxxxxxxxxv8E/", data);
}
function preparePayload(body){
var payload;
if (body.message.text){ //接收到文本
var restText = body.message.text;
if(restText.indexOf("名字") >= 0){
restText = "我叫小單!";
}
//消息體
payload = {
"method": "sendMessage",
"chat_id": body.message.chat.id,
"text": restText,
}
}
else if (body.message.sticker){ //接收到表情 直接返回表情
payload = {
"method": "sendSticker",
"chat_id": body.message.chat.id,
"sticker": body.message.sticker.file_id
}
}
else if (body.message.photo){//接收到圖片,直接返回圖片
array = body.message.photo;
text = array[1];
payload = {
"method": "sendPhoto",
"chat_id": body.message.chat.id,
"photo": text.file_id
}
}
else {
payload = {
"method": "sendMessage",
"chat_id": body.message.chat.id,
"text": " 對不起,無法識別內容!!"
}
}
return payload
}
其中
UrlFetchApp.fetch("https://api.telegram.org/bot627711111117:ADAxxxxxxxxxxxxxv8E/", data);
紅色部分改成自己的Token。
4、發佈
點擊 最新代碼可以測試 ,返回 doGet結果。 複製RUL。
爲了訪問不報錯,和一定的信息安全,可以DECODE一下。
在線工具:
https://www.url-encode-decode.com/
選擇賬號允許!
5、將兩個URL通過webhook拼起來
https://api.telegram.org/bot6277:AAENk-JAjufs7HxxxE/setwebhook?url=https%3A%2F%2Fscript.google.com%2Fmacros%2Fs%2FAKfycbzNjr_To%2Fexec
放入瀏覽器訪問,如果返回ok 就已經連接上了。
可以使用 getWebhookInfo 查看webhook信息。
{"ok":true,"result":{"url":"https://script.google.com/macros/s/AxxxxxxxxxxTo/exec","has_custom_certificate":false,"pending_update_count":0,"last_error_date":1551864805,"last_error_message":"Wrong response from the webhook: 401 Unauthorized","max_connections":40}}
6、測試機器人