Хобрук: Ваш путь к мастерству в программировании

Twilio/Python — предупреждение о проверке схемы 12200

Прямо сейчас у меня есть программа, которая получает SMS-сообщение, публикует текст сообщения, а затем пересылает SMS на другой номер. Однако я получаю сообщение об ошибке от 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.

Как я могу это исправить?

16.11.2016

Ответы:


1

Евангелист Twilio здесь.

<Say> не является допустимой командой TwiML для включения в ответ на запрос, сделанный по URL-адресу запроса сообщения. Это действительно только для голосовых запросов.

Если вы хотите отправить сообщение тому, кто отправил текстовое сообщение в Twilio, используйте глагол <Message>.

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

Кроме того, похоже, что вы отправляете TwiML в качестве сообщения нового исходящего SMS-сообщения. Я думаю, вы можете заменить это только параметром Body.

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

Надеюсь, это поможет.

16.11.2016
  • Извините, я не был ясен в этом. Я хочу перенаправить текст SMS, отправленный в Twilio, на другой, 3-й номер (не на номер отправителя или Twilio). Когда я говорил, что это было просто для форматирования XML. Этот код client.messages.create(to=ePhone,from_=tPhone,body=TheMessage) работает, но отладчик все равно выдает ошибки. 16.11.2016
  • @DevinRader, не могли бы вы проверить мой вопрос? Спасибо stackoverflow.com/questions/ 43367898/ 13.04.2017
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...