修改Twilio函数触发Missive与GoHighLevel Webhook处理入站MMS
解决Twilio函数传递MMS内容至Missive和GoHighLevel的问题
你的代码目前仅传递了短信基础字段,MMS的媒体文件信息未被包含在请求体中,导致两个平台接收不到MMS内容。Twilio在触发Webhook时,会通过MediaUrl0、MediaUrl1...(对应第N个媒体文件)和MediaContentType0、MediaContentType1...字段返回MMS的媒体地址和类型,需要把这些字段加入传递的参数中。
修改后的完整代码如下:
const axios = require('axios'); const qs = require('querystring'); exports.handler = function(context, event, callback) { let twiml = new Twilio.twiml.MessagingResponse(); let { ApiVersion, SmsSid, SmsStatus, SmsMessageSid, NumSegments, ToState, From, MessageSid, AccountSid, ToCity, FromCountry, ToZip, FromCity, To, FromZip, ToCountry, Body, NumMedia, FromState } = event; let requestBody = { ApiVersion, SmsSid, SmsStatus, SmsMessageSid, NumSegments, ToState, From, MessageSid, AccountSid, ToCity, FromCountry, ToZip, FromCity, To, FromZip, ToCountry, Body, NumMedia, FromState }; // 添加MMS媒体字段 if (NumMedia > 0) { for (let i = 0; i < parseInt(NumMedia); i++) { requestBody[`MediaUrl${i}`] = event[`MediaUrl${i}`]; requestBody[`MediaContentType${i}`] = event[`MediaContentType${i}`]; } } let url1 = "https://example.com/1"; let url2 = "https://example.com/2"; const config = { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }}; Promise.all([ axios.post(url1, qs.stringify(requestBody), config), axios.post(url2, qs.stringify(requestBody), config) ]).then(result => { callback(null, twiml); }).catch(err => { console.log(err); callback(err); }); };
修改说明
- 新增了针对
NumMedia的判断逻辑:当收到MMS(NumMedia大于0)时,循环遍历所有媒体文件,将对应的MediaUrl{N}和MediaContentType{N}字段添加到requestBody中。 - 这些字段包含了MMS的媒体文件地址和类型,Missive和GoHighLevel就能通过这些字段解析并展示MMS内容。
- 原有短信逻辑不受影响,依然可以正常传递文本内容。
内容的提问来源于stack exchange,提问作者MacKenzie Brackett
相关产品推荐
相关产品推荐

