使用Twilio / Flask转发SMS的模式验证警告

时间:2016-11-17 03:46:29

标签: python sms twilio

我的代码接收传入的短信,提取正文,并将正文转发给另一个号码。 (tPhone是Twilio号码,ePhone是我想要转发的号码)

import twilio.twiml
from flask import Flask, request, redirect
from twilio.rest import TwilioRestClient
from passwords import *

client = TwilioRestClient(account_sid, auth_token)

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def AlertService():
    TheMessage=request.form.get("Body")
    if (TheMessage != None):
        print(TheMessage)
        client.messages.create(to=ePhone, from_=tPhone, body=TheMessage)
    return str(TheMessage)

if __name__ == "__main__":
    app.run(debug=True,host="0.0.0.0")

代码有效(消息被转发),但Twilio调试器告诉我

  

prolog中不允许使用内容。

     

警告 - 12200

     

架构验证警告

     

提供的XML不符合Twilio标记XML架构。

如何修复发送给Twilio的XML?

编辑:我找到的一些东西。即使我将'TheMessage'设置为预定义的字符串(例如TheMessage="hello"),我也会从Twilio收到相同的错误。

此外,如果我尝试生成并发送XML,我仍然会收到相同的错误。

    resp = twiml.Response()
    XML = resp.message(TheMessage)
    print(XML)
    client.messages.create(body=str(XML),to=ePhone,from_=tPhone)

如果我尝试body=XML,代码将无法发送,如果我尝试body=str(XML),则只会将XML作为纯文本发送。

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

目前看起来好像在使用REST API to forward the SMS message。虽然您可以这样做,但使用TwiML可以更轻松地使用<Message> verb在请求中执行此操作。在您的第二个示例中,您似乎尝试将TwiML和REST API一起使用,但这不起作用。

因此,您只想构建一个TwiML响应,如果有传入消息,则将消息添加到该响应中,然后使用<Message> attributes to and from将其转发到您的电话号码。像这样:

import twilio.twiml
from flask import Flask, request, redirect
from passwords import *

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def AlertService():
    TheMessage=request.form.get("Body")
    resp = twiml.Response()
    if (TheMessage != None):
        resp.message(TheMessage, to=ePhone)
    return str(resp)

if __name__ == "__main__":
    app.run(debug=True,host="0.0.0.0")

让我知道这是否有帮助。