使用Twilio与PHP发送WhatsApp模板消息报错求助
使用Twilio PHP发送WhatsApp模板消息示例
问题根源
你之前直接将变量替换到文本中作为普通消息发送,这不符合Twilio模板消息的发送规则。Twilio要求发送模板消息时,必须指定已审核通过的模板标识,并单独传递变量参数,而非直接替换模板内容后发送。
核心要求
- 确保你的WhatsApp模板已在Twilio控制台提交并通过审核,模板占位符为
{{1}}、{{2}}这类格式 - 发送时需通过Twilio API指定模板,变量值单独以数组形式传递,不能直接拼接成普通文本
完整代码示例
<?php // 引入Twilio PHP SDK(需先通过Composer安装) require_once 'vendor/autoload.php'; use Twilio\Rest\Client; // 替换为你的Twilio账户信息 $accountSid = '你的Twilio账户SID'; $authToken = '你的Twilio认证Token'; $twilioWaNumber = 'whatsapp:+14155238886'; // Twilio官方WhatsApp号码 $recipientWaNumber = 'whatsapp:+目标用户的WhatsApp号码'; // 接收方号码 // 初始化Twilio客户端 $client = new Client($accountSid, $authToken); try { // 发送模板消息 $message = $client->messages->create( $recipientWaNumber, [ 'from' => $twilioWaNumber, // 使用模板SID(优先推荐,避免名称冲突) 'contentSid' => '你的模板SID', // 或者使用模板名称:'contentTemplateName' => '你的模板名称', // 传递模板变量值,对应模板中的{{1}}、{{2}}等占位符 'contentVariables' => json_encode([ '{{1}}' => '客户姓名', // 对应模板中的{{1}} '{{2}}' => '你的姓名', // 需先将模板中的*sameName*改为{{2}} '{{3}}' => '你的联系电话', // 需先将模板中的*SomeTel*改为{{3}} '{{4}}' => '你的邮箱地址' // 需先将模板中的*SomeEmail*改为{{4}} ]) ] ); echo "模板消息发送成功,消息SID: " . $message->sid; } catch (Exception $e) { echo "发送失败: " . $e->getMessage(); } ?>
关键注意事项
- 若模板中的
*sameName*、*SomeTel*、*SomeEmail*是固定签名内容,无需作为变量,需确保模板本身已包含这些固定内容,发送时仅传递{{1}}对应的客户姓名即可 - 模板审核通过后,才能通过API调用发送,否则会报错
- 确保
contentVariables中的键与模板占位符完全一致(比如{{1}}),值对应实际内容
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

