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

如何解决Laravel中使用WhatsApp API的GraphMethodException错误

解决WhatsApp Business API GraphMethodException(code:100, subcode:33)错误

针对你遇到的这个错误,以下是逐一排查的解决方案:

1. 确认Graph API版本是否正确

WhatsApp Business API要求使用v18.0及以上的版本,旧版本已不再支持messages端点操作。你可以在config/services.php的whatsapp配置中指定API版本:

'whatsapp' => [
    'from-phone-number-id' => env('WHATSAPP_FROM_PHONE_NUMBER_ID'),
    'token' => env('WHATSAPP_TOKEN'),
    'api-version' => 'v18.0', // 添加这一行,使用最新稳定版
],

2. 验证Phone Number ID的有效性

确保你填写的WHATSAPP_FROM_PHONE_NUMBER_ID是绑定到WhatsApp Business账户的电话号码ID,而非应用ID、商务管理平台ID或其他ID。

  • 登录Meta商务管理平台,进入「业务设置」→「WhatsApp账户」→「电话号码」,复制对应号码的ID即可。

3. 检查令牌的权限与有效性

你的访问令牌必须具备以下权限:

  • whatsapp_business_messaging
  • pages_messaging
    同时要确保令牌是针对当前WhatsApp Business账户生成的,且未过期。可以通过Meta的Graph API调试工具直接验证令牌权限,或发送基础请求测试。

4. 确认通知类的消息格式

确保你的AppuntamentiPazienti通知类中,toWhatsApp方法返回的消息结构符合WhatsAPI要求:

public function toWhatsApp($notifiable)
{
    return (new WhatsAppMessage)
        ->content([
            'messaging_product' => 'whatsapp',
            'to' => $notifiable->phone, // 必须带国家码,比如+39xxxxxxxxx
            'text' => [
                'body' => '你的消息内容'
            ]
        ]);
}

注意:收件人号码必须包含完整国家码,不能省略。

5. 直接测试基础API请求

绕过Laravel包,用curl直接调用Meta的Graph API,确认问题是否出在配置而非代码:

curl -X POST "https://graph.facebook.com/v18.0/你的电话号码ID/messages" \
-H "Authorization: Bearer 你的访问令牌" \
-H "Content-Type: application/json" \
-d '{
  "messaging_product": "whatsapp",
  "to": "收件人完整号码(带国家码)",
  "text": {
    "body": "测试消息"
  }
}'

如果这个请求报错,说明是Meta端的配置问题(权限、号码ID错误等);如果请求成功,再排查Laravel包的配置或通知类代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:51:06