You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中使用Twilio发送带快速回复按钮的WhatsApp消息?

在Laravel中为Twilio聊天机器人添加快速回复按钮

前提准备

确保你已经完成Twilio Laravel SDK的安装与配置:

  1. 安装依赖包:
composer require twilio/sdk
  1. 在项目根目录的.env文件中填入Twilio凭证:
TWILIO_SID=你的Twilio账号SID
TWILIO_AUTH_TOKEN=你的Twilio认证令牌
TWILIO_PHONE_NUMBER=你的Twilio号码(格式示例:whatsapp:+1234567890)

创建Webhook控制器与路由

  1. 生成处理消息的控制器:
php artisan make:controller TwilioChatbotController
  1. 在routes/web.php中添加POST路由,用于接收Twilio的消息回调:
use App\Http\Controllers\TwilioChatbotController;

Route::post('/twilio/webhook', [TwilioChatbotController::class, 'handleMessage']);

实现带快速回复的消息逻辑

在TwilioChatbotController中编写处理方法,构造包含快速回复按钮的响应:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twilio\TwiML\MessagingResponse;
use Twilio\TwiML\WhatsApp\Message;
use Twilio\TwiML\WhatsApp\QuickReply;

class TwilioChatbotController extends Controller
{
    public function handleMessage(Request $request)
    {
        // 初始化Twilio响应对象
        $response = new MessagingResponse();
        
        // 设置消息主体内容
        $message = $response->message('您好,请问需要什么帮助?');

        // 创建三个快速回复按钮
        $orderReply = new QuickReply([
            'type' => 'text',
            'title' => '查询订单状态',
            'payload' => 'ORDER_QUERY' // 自定义标识,用于后续识别用户选择
        ]);

        $supportReply = new QuickReply([
            'type' => 'text',
            'title' => '联系人工客服',
            'payload' => 'CONTACT_SUPPORT'
        ]);

        $faqReply = new QuickReply([
            'type' => 'text',
            'title' => '查看常见问题',
            'payload' => 'VIEW_FAQ'
        ]);

        // 将按钮绑定到消息上
        $message->addQuickReply($orderReply);
        $message->addQuickReply($supportReply);
        $message->addQuickReply($faqReply);

        // 返回XML格式的响应给Twilio
        return response($response)->header('Content-Type', 'application/xml');
    }
}

关键说明

  • 渠道限制:Twilio快速回复仅支持WhatsApp和Facebook Messenger渠道,无法在SMS消息中使用。
  • 用户选择处理:用户点击快速回复按钮后,Twilio会将对应按钮的payload值(部分渠道会传递标题内容)通过webhook发送到你的应用,你可以通过$request->input('Payload')或$request->input('Body')获取该值,进而编写分支逻辑处理不同请求。
  • 本地测试:由于Twilio需要访问公网地址,本地开发时可以用ngrok将Laravel服务暴露到公网,例如:
ngrok http 8000

之后将生成的公网地址(如https://xxxx-xx-xx-xx-xx.ngrok.io/twilio/webhook)配置为Twilio号码的消息webhook地址即可测试。

内容的提问来源于stack exchange,提问作者Ibrahim Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:37:13