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

如何在Laravel项目中通过Twilio WhatsApp API接收消息?

接收Twilio WhatsApp回复消息的实现方案

1. 配置Twilio控制台的Webhook

登录Twilio控制台,找到你的WhatsApp绑定号码,在「Messaging」设置里,找到「When a message comes in」选项,设置Webhook URL为你的Laravel项目公网可访问的路由地址(比如https://your-domain.com/twilio/webhook),请求方法选择POST。

本地开发时,需要用ngrok之类的工具暴露本地端口,生成临时HTTPS地址,比如ngrok http 8000后,用https://xxxx-xx-xx-xx-xx.ngrok.io/twilio/webhook作为Webhook URL。

2. 添加Laravel路由

在routes/web.php或routes/api.php中添加POST路由:

use App\Http\Controllers\TwilioController;

Route::post('/twilio/webhook', [TwilioController::class, 'handleIncomingMessage']);

3. 编写消息处理逻辑

在TwilioController中实现handleIncomingMessage方法,接收并处理Twilio推送的消息数据:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twilio\Rest\Client;
use Twilio\Security\RequestValidator;

class TwilioController extends Controller
{
    public function handleIncomingMessage(Request $request)
    {
        // 可选:验证请求是否来自Twilio
        $validator = new RequestValidator(env('TWILIO_AUTH_TOKEN'));
        $signature = $request->header('X-Twilio-Signature');
        $webhookUrl = url('/twilio/webhook');

        if (!$validator->validate($signature, $webhookUrl, $request->all())) {
            return response('Invalid request', 403);
        }

        // 获取核心消息参数
        $senderNumber = $request->input('From'); // 格式:whatsapp:+1234567890
        $messageContent = $request->input('Body');
        $yourTwilioNumber = $request->input('To');

        // 这里可以根据业务需求处理消息:比如存入数据库、触发业务逻辑、自动回复等
        // 示例:自动回复消息给发送方
        $twilioClient = new Client(env('TWILIO_SID'), env('TWILIO_AUTH_TOKEN'));
        $twilioClient->messages->create(
            $senderNumber,
            [
                'from' => $yourTwilioNumber,
                'body' => "已收到你的消息:{$messageContent}"
            ]
        );

        // 必须返回200响应给Twilio,避免重复推送
        return response('OK', 200);
    }
}

4. 排除CSRF验证

由于Twilio的Webhook请求无法携带Laravel的CSRF令牌,需要在App\Http\Middleware\VerifyCsrfToken中排除该路由:

protected $except = [
    '/twilio/webhook',
];

5. 测试流程

  1. 启动本地Laravel服务,用ngrok生成公网地址
  2. 在Twilio控制台更新Webhook URL为ngrok地址+路由路径
  3. 用绑定的WhatsApp号码给你的Twilio号码发送消息
  4. 查看Laravel日志或数据库,确认消息已被接收处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:52:02