GAS 构建的电报机器人:捕捉对机器人的回复
GAS-built telegram bot: catching replies to bot
我在 GAS 上写了一个机器人来从电报中读取/写入 google sheet。我使用 webhook 方法。我可以用 /read <args>
和 /write <args>
来解决机器人问题。然而,不太懂技术的人无法理解争论的原则......
所以我想做一个对话机器人,比如botfather。例如,如果 /read
或 /write
被发送,那么机器人会在下午询问参数,一个接一个。
“在 PM 中回复”部分很简单,但我不知道如何捕捉对参数的回复?
据我所知,每次向机器人发送命令时都会调用函数 doPost
,这会带来交互性问题,并且需要对脚本执行斜杠命令 运行而不是纯文本回复(并且由于 GAS 数据易变,存储变量以了解机器人应该执行第二个操作的丑陋变通方法也是不可能的)。
- webhook方式是否可行?
- 我应该切换到 polling / getUpdates 方法吗?我猜它可以那样工作,在没有回复的情况下超时退出脚本,但我也猜测 PM 聊天应该设置为 'no privacy' 模式。或者它可能是机器人固有的?
感谢任何帮助!
doGet 和 doPost 是您关注网络应用程序时调用的函数 url。如果您使用 UrlFetchApp 之类的东西来访问它们,或者如果您可以处理 oauth,甚至可以将它们用作 Http 请求,则可以将它们用作 api。
因此,GAS 确实提供了 not-so 易失性存储:CacheService.getScriptCache()(另请参阅 https://developers.google.com/apps-script/reference/cache/cache)
原理很简单:将你想要持久化的变量存储在缓存中(可选,也可以设置超时 - 默认为10分钟),并在再次调用脚本时获取值。我发现那个帮助我理解如何使用它的项目:https://github.com/Milleus/tessara/blob/master/Code.gs
简而言之:语法是 cache.put(key, value)
存储值,value=cache.get(key)
取回值。
它的美妙之处在于所有需要的变量(如果有多个)都可以存储在一个对象中,键可以是“用户”的唯一标识符,值是字符串化的对象。
就我而言,我能够构建一个完全对话的电报机器人(与 BotFather 完全一样,但仅供我使用)。使用向机器人发送消息的人的 ID 作为密钥,脚本可以 运行 同时为多个用户“并行”。
我在 GAS 上写了一个机器人来从电报中读取/写入 google sheet。我使用 webhook 方法。我可以用 /read <args>
和 /write <args>
来解决机器人问题。然而,不太懂技术的人无法理解争论的原则......
所以我想做一个对话机器人,比如botfather。例如,如果 /read
或 /write
被发送,那么机器人会在下午询问参数,一个接一个。
“在 PM 中回复”部分很简单,但我不知道如何捕捉对参数的回复?
据我所知,每次向机器人发送命令时都会调用函数 doPost
,这会带来交互性问题,并且需要对脚本执行斜杠命令 运行而不是纯文本回复(并且由于 GAS 数据易变,存储变量以了解机器人应该执行第二个操作的丑陋变通方法也是不可能的)。
- webhook方式是否可行?
- 我应该切换到 polling / getUpdates 方法吗?我猜它可以那样工作,在没有回复的情况下超时退出脚本,但我也猜测 PM 聊天应该设置为 'no privacy' 模式。或者它可能是机器人固有的?
感谢任何帮助!
doGet 和 doPost 是您关注网络应用程序时调用的函数 url。如果您使用 UrlFetchApp 之类的东西来访问它们,或者如果您可以处理 oauth,甚至可以将它们用作 Http 请求,则可以将它们用作 api。
因此,GAS 确实提供了 not-so 易失性存储:CacheService.getScriptCache()(另请参阅 https://developers.google.com/apps-script/reference/cache/cache)
原理很简单:将你想要持久化的变量存储在缓存中(可选,也可以设置超时 - 默认为10分钟),并在再次调用脚本时获取值。我发现那个帮助我理解如何使用它的项目:https://github.com/Milleus/tessara/blob/master/Code.gs
简而言之:语法是 cache.put(key, value)
存储值,value=cache.get(key)
取回值。
它的美妙之处在于所有需要的变量(如果有多个)都可以存储在一个对象中,键可以是“用户”的唯一标识符,值是字符串化的对象。
就我而言,我能够构建一个完全对话的电报机器人(与 BotFather 完全一样,但仅供我使用)。使用向机器人发送消息的人的 ID 作为密钥,脚本可以 运行 同时为多个用户“并行”。