如何在Laravel电报机器人API中发送选项

异乡拾荒客异乡拾荒客05月23日4310

怎么在 Laravel 电报机器人发送消息时,出现几个选项让用户选择,比如点“是”和“否”,不是按钮,就是那种弹出来的,我找资料没看懂,求各位大佬指教,应该怎么操作,要修改哪些文件,用到什么格式吗,详细点谢谢!

6 个回答

飞言
飞言回答于 05 月 26 日
最佳答案

电报机器人想让用户选择「是」「否」,其实官方叫 Inline Keyboard(内联键盘)

具体步骤如下:

1. 构造一个 JSON 格式的 reply_markup 参数,其中包含按钮文字和操作。

2. 按钮行为通过 `callback_data` 传递标识符 (如 "yes" 或 "no") 而不是 URL。

3. 发送消息时,将此参数添加到 API 请求中。

示例代码片段(PHP):

```php

```

$keyboard = json_encode([

'inline_keyboard' => [

[['text' => '是', 'callback_data' => 'yes']],

[['text' => '否', 'callback_data' => 'no']]

]

];

使用 `sendMessage` 传递此 `reply_markup`。

这样,当用户按下按钮后,你会得到一个 `callback_query` 更新,根据 `data` 来判断用户选择了什么。

并不是所有的消息类型都支持此功能,确保是 `sendMessage` 接口。

OK!

镜梓涵
镜梓涵回答于 05 月 26 日

通过Telegram Bot API的reply_markup参数,构造一个inline_keyboard数组,里面放button对象。Laravel中组装JSON发请求即可。比如:[“keyboard” => [[“是”, “否”]], “one_time_keyboard” => true],这样就能弹出选项面板了。

雨声入深森
雨声入深森回答于 05 月 27 日

在Laravel Telegram机器人中发送选项,可以使用Telegram Bot API的`reply_markup`参数。通过创建具有`inline_keyboard`或`keyboard`类型的`reply_markup`,你可以定义选项按钮(例如,是或否)。通过返回json响应,你可以从用户那里获取回调。具体实现是在控制器中构建消息数组,并调用Telegram的`sendMessage`方法发送消息。注意调整消息中的按钮排列和消息内容。

比如,`Telegram::sendMessage()`,参数中加入`reply_markup`字段,格式参考Telegram官方文档中的键盘布局格式,用户就可以选择选项了。

迟晶滢
迟晶滢回答于 05 月 30 日

Laravel电报机器人实现选项回复(如“是/否”)需要调用Telegram Bot API的InlineKeyboardMarkup功能。

具体操作步骤:

1. 生成回复按钮:在控制器或服务类中,使用json_encode构造包含按钮数组的json对象(如:[['text'=>'是', 'callback_data'=>'yes'], ['text'=>'否', 'callback_data'=>'no']])。

2. 绑定回调处理函数:绑定按钮的callback_data值与你的逻辑(监听回调事件并执行相应操作)

3. 发送消息时附带键盘:调用Telegram bot API的`sendMessage`方法,并在`reply_markup`中传入构造好的JSON对象。

这样用户点击后会出发回调时间,然后根据callback_data继续操作即可。

左丘靓影
左丘靓影回答于 06 月 01 日

Telegram里是用`InlineKeyboardMarkup`,不是按钮但会选项。 Laravel调用Telegram Bot API时,消息体里加`reply_markup`字段,JSON数组嵌套选项,例如`"reply_markup": {"inline_keyboard": [[{"text": "是", "callback_data": "yes"}, {"text": "否", "callback_data": "no"}]]}`,用户选后Bot会收到回调,你监听回调就行,不要搞太复杂,直接套用Telegram Bot的API文档就行。

第翠阳
第翠阳回答于 06 月 02 日

想让用户点击「是」或「否」,你需要使用Telegram的InlineKeyboardMarkup。

1. 安装`irazasyed/telegram-bot-sdk`包简化工作

2. 构造按钮数组,格式如下:

```php

```

$keyboard = [

['text' => '是'],

['text' => '否']

];

```

```

阅读以上原文,以资深的网络写手的口吻,用流畅的人类语言来改写文章,注意并不是简单的同义词替换,而需要换句式表达,不能改变原文意思,不能出现原文字符串的堆砌,需要让读者读起来很通顺,切记不能出现任何的疑问句,也不能回答读者任何问题,也不能出现任何疑问句,字数和原文基本一致。

3. 发送时带参数:

```php

```

$bot->sendMessage([

'chat_id'=>$chatId,

'text' => '确认',

'reply_markup' => json_encode(['inline_keyboard' => $keyboard])

]);

注意接收用户点击后的回调数据,监听callback_query事件就可以了,这是最正常的处理方式,不要想的太复杂。

您的答案