Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 连接电报机器人与谷歌应用程序脚本_Google Apps Script_Google Sheets_Telegram Bot - Fatal编程技术网

Google apps script 连接电报机器人与谷歌应用程序脚本

Google apps script 连接电报机器人与谷歌应用程序脚本,google-apps-script,google-sheets,telegram-bot,Google Apps Script,Google Sheets,Telegram Bot,我已经在电报机器人上安装了一个机器人,并通过下面的教程通过应用程序脚本将其与谷歌电子表格连接起来。代码如下: var token = ""; // FILL IN YOUR OWN TOKEN var telegramUrl = "https://api.telegram.org/bot" + token; var webAppUrl = ""; // FILL IN YOUR GOOGLE WEB APP ADDRESS var ssId = ""; // FILL IN THE ID OF

我已经在电报机器人上安装了一个机器人,并通过下面的教程通过应用程序脚本将其与谷歌电子表格连接起来。代码如下:

var token = ""; // FILL IN YOUR OWN TOKEN
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = ""; // FILL IN YOUR GOOGLE WEB APP ADDRESS
var ssId = ""; // FILL IN THE ID OF YOUR SPREADSHEET

function getMe() {
  var url = telegramUrl + "/getMe";
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function setWebhook() {
  var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function sendText(id,text) {
  var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text=" + text;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function doGet(e) {
  return HtmlService.createHtmlOutput("Hi there");
}

function doPost(e) {
  // this is where telegram works
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var id = data.message.chat.id;
  var name = data.message.chat.first_name + " " + data.message.chat.last_name;
  var answer = "Hi " + name + ", thank you for your comment " + text;
  sendText(id,answer);
  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(),id,name,text,answer]);

  if(/^@/.test(text)) {
    var sheetName = text.slice(1).split(" ")[0];
    var sheet = SpreadsheetApp.openById(ssId).getSheetByName(sheetName) ? SpreadsheetApp.openById(ssId).getSheetByName(sheetName) : SpreadsheetApp.openById(ssId).insertSheet(sheetName);
    var comment = text.split(" ").slice(1).join(" ");
    sheet.appendRow([new Date(),id,name,comment,answer]);
  }
}
现在我遇到了下面的问题,;我使用我的机器人来存储来自家庭自动化系统的消息。因此,我通过HTTP GET请求将这些消息从系统发送到电报机器人:


目前,脚本似乎忽略了通过http get请求发送的这些消息。有人知道我如何解决这个问题吗?

从您的问题和评论来看,您似乎正在努力通过电报将脚本中的信息发送到您的机器人。以下是执行此操作的步骤:

1.-创建一个bot:在Telegrame的搜索中查找@BotFather。单击开始,写入/newbot,给它一个名称和用户名。您应该获得一个令牌来访问HTTP API。保存此令牌

2.-在带有用户名的电报中找到您的机器人。在上面写些东西,例如“测试”。这将在以后派上用场

3.-测试从代码访问bot的权限

var token = "123456:kioASDdjicOljd_ijsdf"; // Fill this in with your token
var telegramUrl = "https://api.telegram.org/bot" + token;

function getMe() {
  var url = telegramUrl + "/getMe";
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}
你应该得到类似的东西:

{"ok":true,"result":{"id":<somenumber>,"is_bot":true,"first_name":"<name of your bot>","username":"<username of your bot>","can_join_groups":true,"can_read_all_group_messages":false,"supports_inline_queries":false}}
已知是您要发送的文本,例如“测试机器人”,但聊天id未知。我们从哪里得到这个

5.-查找聊天室id。在运行此功能之前,请确保您至少通过电报向您的机器人发送了一条消息(步骤2)


6.
使用您在第5步中找到的聊天id和要发送的消息运行sendMessage

从您的问题和评论判断,您似乎正在努力通过电报将信息从脚本发送到机器人。以下是执行此操作的步骤:

1.-创建一个bot:在Telegrame的搜索中查找@BotFather。单击开始,写入/newbot,给它一个名称和用户名。您应该获得一个令牌来访问HTTP API。保存此令牌

2.-在带有用户名的电报中找到您的机器人。在上面写些东西,例如“测试”。这将在以后派上用场

3.-测试从代码访问bot的权限

var token = "123456:kioASDdjicOljd_ijsdf"; // Fill this in with your token
var telegramUrl = "https://api.telegram.org/bot" + token;

function getMe() {
  var url = telegramUrl + "/getMe";
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}
你应该得到类似的东西:

{"ok":true,"result":{"id":<somenumber>,"is_bot":true,"first_name":"<name of your bot>","username":"<username of your bot>","can_join_groups":true,"can_read_all_group_messages":false,"supports_inline_queries":false}}
已知是您要发送的文本,例如“测试机器人”,但聊天id未知。我们从哪里得到这个

5.-查找聊天室id。在运行此功能之前,请确保您至少通过电报向您的机器人发送了一条消息(步骤2)


6.
使用步骤5中找到的聊天id和要发送的消息运行sendMessage

添加有关收到的响应的更多信息。您应该包括标题(减去敏感数据)、响应代码等。还考虑首先建立请求,记录它,比较它与电报API所期望的,然后发送它。参考:更精确的是:当我在我的手机上发短信时,BOT工作。如果我输入例如“@test123”,我的电子表格中将生成一个新的工作表,其中包含一行时间戳、聊天id、消息发送者的名字、消息文本和已发送的响应。但是,如果我的家庭自动化系统通过http get请求发送消息(如上所述),则该消息不会通过脚本处理。电报webhook是否能够响应非用户输入?这可能就是为什么通过电子表格功能向电报发送
“@test test123”
时出现问题的原因。如果需要,我强烈建议您预览将要发送的所需文件。您可能需要显式地对您的StringsEncode进行URL编码。在对它进行了多次测试之后,我认为它无法响应非用户输入,但问题是,是否有解决方法。通过http get方法发送的消息会出现在聊天中,但正如我提到的,它显然不会触发我脚本的doPost函数。请添加有关您得到的响应的更多信息。您应该包括标题(减去敏感数据)、响应代码等。还考虑首先建立请求,记录它,比较它与电报API所期望的,然后发送它。参考:更精确的是:当我在我的手机上发短信时,BOT工作。如果我输入例如“@test123”,我的电子表格中将生成一个新的工作表,其中包含一行时间戳、聊天id、消息发送者的名字、消息文本和已发送的响应。但是,如果我的家庭自动化系统通过http get请求发送消息(如上所述),则该消息不会通过脚本处理。电报webhook是否能够响应非用户输入?这可能就是为什么通过电子表格功能向电报发送
“@test test123”
时出现问题的原因。如果需要,我强烈建议您预览将要发送的所需文件。您可能需要显式地对您的StringsEncode进行URL编码。在对它进行了多次测试之后,我认为它无法响应非用户输入,但问题是,是否有解决方法。通过http get方法发送的消息会出现在聊天中,但正如我提到的,它显然不会触发我脚本的doPost函数。