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> 直接附加到它。

如果这有帮助,请告诉我。