Google apps script 使用RESTAPI向Google聊天室发送消息(Google示例在2020年不起作用)
我从哪里开始。。。(谷歌,你为什么要这样伤害我?) 背景信息 我创建了一个新的聊天机器人,它从中的用户接收消息,并用一条消息同步响应(每条消息只能有一条来自聊天机器人的响应) 现在,我需要一种发送异步消息的方法,以便bot可以自己发送消息,或者一次发送多个单独的响应 问题 有一个方法,,但此方法(Google apps script 使用RESTAPI向Google聊天室发送消息(Google示例在2020年不起作用),google-apps-script,google-api,chatbot,service-accounts,hangout,Google Apps Script,Google Api,Chatbot,Service Accounts,Hangout,我从哪里开始。。。(谷歌,你为什么要这样伤害我?) 背景信息 我创建了一个新的聊天机器人,它从中的用户接收消息,并用一条消息同步响应(每条消息只能有一条来自聊天机器人的响应) 现在,我需要一种发送异步消息的方法,以便bot可以自己发送消息,或者一次发送多个单独的响应 问题 有一个方法,,但此方法(spaces.messages.create)不起作用!从2020年起,没有这种方法的工作示例。 下面是Google使用RESTAPI创建消息的示例 问题在于,在他们的示例中,范围设置为: 如果导航到该
spaces.messages.create
)不起作用!从2020年起,没有这种方法的工作示例。
下面是Google使用RESTAPI创建消息的示例
问题在于,在他们的示例中,范围
设置为:
如果导航到该URL,您将看到以下404错误:
Not Found
Error 404
此外,如果您选中,您将注意到没有与闲逛或聊天相关的作用域,也没有提到示例代码中使用的Chat.bot
作用域
我试过什么?
我已经阅读了与此聊天API相关的StackOverflow的所有问题,以及RESTAPI的所有教程
- Google的官方应用程序脚本教程不起作用,因为
范围已不存在:chat.bot
- 这些StackOverflow解决方案都使用相同的不存在的
范围:chat.bot
- 此StackOverflow用户表示他们能够使用
范围(即聊天
),但该范围也不存在:googleapis.com/auth/chat
chat.bot
范围确实存在。要使用REST API设置聊天机器人,您必须使用
更多信息:
根据您链接的文档,对于在触发器上发送异步消息:
…目前实现这一点的唯一方法是通过外部HTTP API(请参阅)。这需要通过使用云服务帐户(请参阅文档)
这意味着,您必须首先在GCP控制台中设置一个服务帐户,以便将chat.bot
作用域用于这些消息。对于不感兴趣的人来说,整个过程可能相当艰巨,因此我将在这里提供从头到尾的步骤
过程:
创建服务帐户:
- 导航到并创建新的GCP项目。点击页面顶部的
,然后单击选择项目
。新建项目
- 您需要提供
,其他字段应自动填写项目名称
- 您需要提供
- 按
-屏幕右上角将出现一个新的弹出窗口,确认正在创建一个新项目。加载后,您可以单击查看CREATE
- 单击
☰代码>图标位于左上角,然后单击
菜单项api&Services>Credentials
- 在此页面顶部,单击
。+创建凭据>服务帐户
- 为服务帐户提供名称和说明,然后按
,然后按创建
,最后按继续
完成
- 为服务帐户提供名称和说明,然后按
- 创建服务帐户后,您将被重定向回可用于GCP项目的凭据列表。在
部分下,单击新建的服务帐户。这将被称为服务帐户
服务帐户-name@project-name-XXXXXX.iam.gserviceaccount.com
- 单击
addkey>createnewkey
- 保持
处于选中状态,然后按JSON
。CREATE
- 这将启动凭据文件的下载,您需要使用该文件作为此服务帐户访问API请勿丢失或共享此文件。如果丢失,您需要删除并为此帐户创建新凭据
- 返回到
,然后选择☰ > API和服务
库
- 搜索
,然后单击唯一的结果聊天室API
- 单击启用。这将为您的项目启用API
- 创建新的应用程序脚本项目
- 现在,您可以将示例从页面复制并粘贴到新项目中
- 打开从GCP控制台下载的凭据文件。
- 复制
值(以private\u key
开头的值),并将其粘贴到应用程序脚本项目中的----BEGIN private key-----
的值中SERVICE\u ACCOUNT\u private\u key
- 还要从凭据文件复制
值,并将其粘贴到应用程序脚本项目中的客户端电子邮件
服务帐户电子邮件
- 复制
Not Found
Error 404
{
"timeZone": "Europe/Paris",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Drive",
"serviceId": "drive",
"version": "v2"
}],
"libraries": [{
"userSymbol": "OAuth2",
"libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
"version": "38"
}]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
}