Twilio 用彩信屏蔽号码
Twilio masked numbers with MMS messages
我正在尝试屏蔽员工和客户之间的号码,到目前为止我已经可以使用 SMS 和语音,但我无法弄清楚如何传递 MMS 消息。我是否需要使用 REST API,或者对 webhook 的响应就足够了? REST API 并没有那么难。看起来应该有一个 TwiML 响应可以工作,就像 SMS 和语音一样。
在Python中,我使用的代码类似于:
import requests
from django.views import View
from twilio.twiml.messaging_response import MessagingResponse, Media
from django.http import HttpResponse
class SMSWebhook(View):
def post(self, request):
twilio_out = MessagingResponse()
twil_in = request.POST
# Call database to determine recipient's number
scheduler_data = requests.post('my_server_url', data={'to': twil_in['To'], 'caller': twil_in['From']})
scheduler_in = scheduler_data.json()[0]
# check if it is a valid message
if scheduler_data.status_code == 200:
twilio_out.message(body=twil_in['Body'], to=scheduler_in['recipient'], from_=twil_in['To'])
if twil_in['NumMedia']:
for i in range(int(twil_in['NumMedia'])):
twilio_out.append(Media(twil_in['MediaUrl' + str(i)]))
else:
twilio_out.message('sms_default_message')
return HttpResponse(str(twilio_out), content_type='text/xml')
它产生的TwiML是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Message from="+XXXXXXXXXXX" to="+XXXXXXXXXXX" />
<Media>https://api.twilio.com/2010-04-01/Accounts/...</Media>
</Response>
这里是 Twilio 开发人员布道师。
使用 TwiML 发送彩信时,您需要使用 <Body>
and <Media>
nouns inside of the <Message>
。在您的示例中,您的 <Media>
似乎位于 <Message>
之外。
您可能想要这样的东西:
if scheduler_data.status_code == 200:
message = twilio_out.message(to=scheduler_in['recipient'], from_=twil_in['To'])
message.append(Body(twil_in['Body']))
if twil_in['NumMedia']:
for i in range(int(twil_in['NumMedia'])):
message.append(Media(twil_in['MediaUrl' + str(i)]))
else:
请注意我如何保存对 <Message>
的引用,然后将 <Media>
直接附加到它。
如果这有帮助,请告诉我。
我正在尝试屏蔽员工和客户之间的号码,到目前为止我已经可以使用 SMS 和语音,但我无法弄清楚如何传递 MMS 消息。我是否需要使用 REST API,或者对 webhook 的响应就足够了? REST API 并没有那么难。看起来应该有一个 TwiML 响应可以工作,就像 SMS 和语音一样。
在Python中,我使用的代码类似于:
import requests
from django.views import View
from twilio.twiml.messaging_response import MessagingResponse, Media
from django.http import HttpResponse
class SMSWebhook(View):
def post(self, request):
twilio_out = MessagingResponse()
twil_in = request.POST
# Call database to determine recipient's number
scheduler_data = requests.post('my_server_url', data={'to': twil_in['To'], 'caller': twil_in['From']})
scheduler_in = scheduler_data.json()[0]
# check if it is a valid message
if scheduler_data.status_code == 200:
twilio_out.message(body=twil_in['Body'], to=scheduler_in['recipient'], from_=twil_in['To'])
if twil_in['NumMedia']:
for i in range(int(twil_in['NumMedia'])):
twilio_out.append(Media(twil_in['MediaUrl' + str(i)]))
else:
twilio_out.message('sms_default_message')
return HttpResponse(str(twilio_out), content_type='text/xml')
它产生的TwiML是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Message from="+XXXXXXXXXXX" to="+XXXXXXXXXXX" />
<Media>https://api.twilio.com/2010-04-01/Accounts/...</Media>
</Response>
这里是 Twilio 开发人员布道师。
使用 TwiML 发送彩信时,您需要使用 <Body>
and <Media>
nouns inside of the <Message>
。在您的示例中,您的 <Media>
似乎位于 <Message>
之外。
您可能想要这样的东西:
if scheduler_data.status_code == 200:
message = twilio_out.message(to=scheduler_in['recipient'], from_=twil_in['To'])
message.append(Body(twil_in['Body']))
if twil_in['NumMedia']:
for i in range(int(twil_in['NumMedia'])):
message.append(Media(twil_in['MediaUrl' + str(i)]))
else:
请注意我如何保存对 <Message>
的引用,然后将 <Media>
直接附加到它。
如果这有帮助,请告诉我。