Twilio使用MMS消息屏蔽了数字

时间:2017-05-15 05:33:22

标签: twilio twilio-api

我试图屏蔽员工和客户之间的数字,到目前为止,我已经获得了短信和语音工作,但我无法确定如何传递彩信。我是否需要使用REST API,或者对webhook的响应是否足够?它不像REST API那么困难。看起来应该有一个TwiML响应可以工作,就像有短信和语音一样。

在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>

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

使用TwiML发送彩信时,您需要使用<Body> and <Media> nouns内的<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>直接附加到其中。

让我知道这是否有帮助。