Twilio / Python - 12200架构验证警告

时间:2016-11-16 19:58:21

标签: python twilio

现在我有一个程序接收短信,发布消息正文,然后将短信转发给另一个号码。但是我收到Twilio关于“方案验证”的错误。代码完全按照应有的方式运行,但我想修复错误。

最初我有以下代码:

import RUAlertsTwilioWEBSERVER
import twilio.twiml
import time
import praw

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

def login():
    r = praw.Reddit(app_ua)
    r.set_oauth_app_info(app_id, app_secret, app_uri)
    r.refresh_access_information(app_refresh)
    return r

r=RUAlertsTwilioWEBSERVER.login()
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=str(TheMessage))
        r.submit(*submit to reddit code*)
    return str(TheMessage)

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

Twilio调试器给了我 Content is not allowed in prolog. Warning - 12200 Schema validation warning The provided XML does not conform to the Twilio Markup XML schema.

我尝试通过将代码更改为以下内容来获取帖子所需的XML(仅限相关部分)

@app.route("/", methods=['GET', 'POST'])
def AlertService():
    TheMessage=request.form.get("Body")
    if (TheMessage != None):
        print(TheMessage)
        resp = twiml.Response()
        XML = resp.say(TheMessage)
        client.messages.create(to=ePhone,from_=tPhone,body=XML)
        r.submit(*submit to reddit code*)
        return str(resp)
    return str(TheMessage)

此代码无效,因此我将body=XML更改为body=str(XML)。但是现在它只是将XML作为正文发送,我收到错误: cvc-complex-type.2.4.a: Invalid content was found starting with element 'Say'. One of '{Sms, Message, Redirect}' is expected. Warning - 12200 Schema validation warning The provided XML does not conform to the Twilio Markup XML schema.

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Twilio福音传教士在这里。

<Say>不是一个有效的TwiML动词,用于响应对消息请求​​URL的请求。它仅对语音请求有效。

如果您想将短信发送给发送短信给Twilio的人,请使用<Message>动词。

resp = twilio.twiml.Response()
resp.message(message)

此外,您似乎正在发送TwiML作为新的出站SMS消息的消息。我认为你可以用Body param代替它。

client.messages.create(to=ePhone,from_=tPhone,body=TheMessage)

希望有所帮助。