bots 是运行在 telegram 内部的第三方应用。用户可以通过发送消息,命令或者 内联请求 和 bots 进行交互。开发者可以通过向 bot API 发送 HTTPS 请求来控制自己的 bot。
因为最近对 telegram bot 产生了兴趣,想创建一个 bot 试一试,因为网上没有找到相关的中文文档,所以就自己跟着自己的理解和 Google Translate 翻译了介绍文档,文中一定有表述不对的地方,我会在之后编写 bot 的时候进行修改,建议大家阅读的时候参照 原文档 一起阅读。
下面举几个例子,你可以用 bot 来:
Telegram Bots 是一个特别的账号并不需要另外的手机号码去创建,用户可以通过下面两种方式和机器人交互。
来发送请求。这样可以通过内联机器人直接发送内容到任何的聊天,群或者频道。
- @username query
用户发送的消息,命令,和请求被转发给运行在你服务上的应用。我们的中介服务器帮你处理消息的加密和 telegram api 的通讯。你可以通过简单的 HTTPS 接口 (我们提供了 Telegram API 的简化版本) 和服务通讯。我们把这个接口称为 Bot API。
有关 Bot API 的详细说明,请参阅 bots api
我们提供一个 bot 来帮助你创建 bot,你可以直接和 BotFather 交谈,并按照几个简单的步骤就可以创建一个属于自己的 bot。一旦你创建了一个 bot 并获取到你的 authorization token,那就直接去查看 Bot API 手册看看你能操作机器人做什么事情
你也可以查看一些 示例代码
Telegram bots 在很多方面都与众不同 – 我们提供两种样式的键盘以及提供对默认指令、深层链接以及文本格式等的额外接口。
用户可以在任意聊天的输入框中通过输入内联请求和你的 bot 进行交互。只需在输入框中以你的 bot 命开头并输入请求即可。
收到查询后,您的机器人可以返回一些结果。一旦用户点击其中一个,它就发送到用户当前打开的聊天。通过这种方式,人们可以通过任何聊天,小组或频道向您的机器人请求内容。
你可以使用 @sticker 来体验一下。
关于 内联模式 的更多信息
传统的机器人当然可以被教会理解人类的语言。但是有时候你想从用户那里获得更加正式的输入–因此我们提供了自定义键盘。
每当你的机器人发送一条消息,它会传递一个特定的键盘与预定义的答复选项 (请参阅 ReplyKeyboardMarkup ),telegram 会接收到消息并将你设定的键盘展示给用户。点击任何按钮将立即发送相应的命令。这样你可以大大简化用户与你的机器人交互。
有关自定义键盘的更多信息,请查阅 Bot API 的 sendMessage 部分。
有时候用户更喜欢可以不发送消息也能做一些事情。比如,当你的用户正在改变设置或翻阅搜索结果,在这种情况,你可以直接将内联键盘附加到所属的消息中。与自定义回复键盘不同,点击内联键盘上的按钮不会发送消息到当前聊天中。内联键盘支持按钮在后台工作,比如:callback buttons, URL buttons 和 switch to inline buttons。
当使用回调按钮时,你的 bot 可以更新已经存在的消息 (或者只是这些消息附加的键盘) 所以这样能够保持聊天界面的整洁。你可以查看这些机器人的内联键盘的功能: @music 、 @vote 。
命令提供了一个更灵活的方式与您的机器人进行通信。可以使用下面的语法:
- /command [optional] [argument]/
每个命令必须以'/'开头且不能超过 32 个字符,命令可以使用拉丁字母,数字和下划线。下面是几个示例:
- /get_messages_stats
- /set_timer 10min Alarm!
- /get_timezone London, UK
以斜线开头的消息总是被发送给机器人。telegram 将会这样处理:
如果多个机器人在一个组中,可以将 bot 用户名添加到命令中以避免混淆:
- /start@TriviaBot
- /start@ApocalypseBot
这是通过建议列表选择命令时自动完成的,请记住你的 bot 需要能够处理跟在 username 后的指令。
为了使所有的用户能够轻松应对各种 bots 的使用,我们要求开发者必须实现几个基础命令。telegram 将会在界面中为这几个基础指令提供相应的快捷键。
用户在第一次打开与您的机器人的对话时将看到一个 start 按钮。在机器人的配置菜单中有 help 和 setting 的链接。
bots 经常被加入到组中来加强人与人之间的沟通。例如通过提供新闻,来自外部服务的通知或其他搜索功能。特别是那些工作聊天组。现在当你与 bot 共享一个组时,你会问问自己,我怎么能够保证这个小流氓 (bot) 不会将我的历史记录泄露给竞争对手呢?答案就是 - 隐私模式。
运行在隐私模式下的 bot 不会收到所有发送给该组的消息。相反,它只会收到:
一方面,这有助于我们一些人在晚上更好地睡觉; 另一方面,它允许机器人开发人员节省大量的资源,因为他们每天不需要处理数以万计的不相关的消息。
所有的 bots 默认启用隐私模式,除了被加入组中当做管理员的 bot(bot admin) 总是收到所有的消息) 它可以被禁用,以便机器人像普通用户一样接收所有消息。如果不必要,我们建议你不要这样做。用户可以随时在组成员列表中查看机器人的当前隐私设置。在大多数情况下,使用机器人消息的 强制回复 选项应该是绰绰有余的。
百度百科中对 deeplink 有下面这样的描述
移动端深度链接 是指在移动端网页或应用内输入搜索结果,可以链接到手机内安装的其他应用。
telegram bots 有深层链接机制,允许在启动时将其他参数传递给机器人,这可能是一个启动机器人的命令,或者是一个身份验证令牌将用户的 telegram 帐户连接到某个外部服务上的帐户。
每个 bot 都有一个在 telegram 打开一个对话的链接。
您可以将参数 start 或 startgroup 添加到此链接,参数值最多为 64 个字符。例如:
- https://telegram.me/<bot username>
- https://telegram.me/triviabot?startgroup=test
,
- A-Z
,
- a-z
,
- 0-9
和
- _
都可以使用。我们建议使用 base64url 编码参数与二进制和其他类型的内容。
- -
点击带有启动参数的链接将打开与 bot 的一对一对话,在输入栏位显示一个 START 按钮。如果使用 startgroup 参数,则会提示用户选择要添加机器人的组。一旦用户进行了确认 (点击 START 按钮或者选择了一个组加入 bot),你的机器人将以这种格式接收一个来自该用户的消息:
- /start PAYLOAD/
表示链接中传递的 start 或 startgroup 参数的值。
- PAYLOAD
假设网站 example.com 希望通过 bot 向用户发送通知。以下是他们为 ID
用户开启通知进行的操作。
- 123
- $memcache_key = "vCH1vGWJxfSeofSAs0K5PA"
放在内存缓存一小时。
- $memcache_key
(START 按钮会附带参数)
- https://telegram.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA
一些 bot 需要获得用户额外的数据才能工作的更好。例如,知道用户的位置有助于提供更相关的地理位置特定的结果。用户的电话号码对于与银行等其他服务的集成非常有用。
bot 可以使用特殊按钮询问用户的位置和电话号码。请注意,电话号码和位置请求按钮只能用于私人聊天。
当按钮被按下后,telegram 将显示一个确认提醒,告诉用户即将发生的事情。
BotFather 是管理所有 bot 的机器人。它将帮助您创建新的机器人和更改现有机器人的设置。
使用 / newbot 命令来创建一个新的机器人。 BotFather 会要求你提供一个名字和用户名,然后为你的新机器人生成一个授权令牌。
您的机器人的名称显示在联系方式和其他地方。
Uername 是一个简称。用户名长度为 532 个字符,不区分大小写,但只能包含拉丁字符,数字和下划线。你的机器人的用户名必须以 "bot" 结尾。
token 是一串了类似
的字符串。用于授权 bot 并向 Bot API 发送请求。
- 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
如果您的现有令牌受到威胁,或者由于某种原因而丢失了该令牌,请使用 / token 命令生成一个新的令牌。
命令很简单,此处略过,请读者自己尝试。
百万个用户因为 telegram 的快速响应选择我们,为了能够保证开发者的 bot 能时刻处在正常状态。所以当你的 bot 出现问题时,botfather 会给你发送一个状态警报。
我们将会检查热门 bot 的回复数目以及 请求 / 响应 转换率。如果我们得到异常低的读数,您将收到 Botfather 的通知。
默认情况下,每个机器人每小时只能获得一个警报。每个警报都有以下按钮:
你的机器人发送的信息要少于前几周, 这对通讯类型的机器人很有用。
- Too few **private messages** are sent compared to previous weeks: **{value}**
您的机器人不会回复发送给它的所有消息 (您的机器人的请求 / 响应转换率在过去的三个 5 分钟内至少有两次是太低)。为了提供良好的用户体验,请回复发送给您的机器人的所有消息。
- Too few replies to incoming **private messages**. Conversion rate: **{value}**
您的机器人不会回复正在发送给它的所有内嵌查询,其计算方式与上述相同。
- Too few answers to **inline queries**. Conversion rate: **{value}**
- Too few answers to **callback queries**. Conversion rate: **{value}**
你的机器人没有回复正在发送给它的所有回调查询, 其计算方式与上述相同。
- Too few answers to **callback game queries**. Conversion rate: **{value}**
请注意,状态提醒功能仍在测试中,将来会有所改进。
以上就是介绍。阅读完此部分说明您现在已经准备好进入 BOT API 手册。
如果您有任何问题,请查看我们的 Bot FAQ »
来源: https://juejin.im/entry/5a3373bd6fb9a0451b04997b