Twilio SMS Python - Simple отправить сообщение - PullRequest
0 голосов
/ 04 июля 2018

Новичок в Twilio, успешно выполнил руководство SMS Python Quickstart и объединил два бита, но теперь у меня есть некоторый избыточный код, от которого я не могу избавиться, не получив ошибок.

У меня есть код Python, который берет координаты из текстового сообщения, преобразует его в ссылку на Google Maps и отправляет эту ссылку на другой номер телефона.

Однако в настоящее время он также отправляет этот ответ на исходный номер телефона отправителя, поскольку именно это вы и установили в первоначальном руководстве.

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

run.py:

# /usr/bin/env python
# Download the twilio-python library from twilio.com/docs/libraries/python
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse


# Download the helper library from https://www.twilio.com/docs/python/install
from twilio.rest import Client

# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'account_sid'
auth_token = 'auth_token'
client = Client(account_sid, auth_token)


app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def sms_reply():

    messages = client.messages.list()

    print(messages[0].body)

    coord = messages[0].body

    lat,lon = coord.split(":")

    mapURL = "https://www.google.com/maps/search/?api=1&query=" + lat + "," + lon

    message = client.messages.create(
        body=mapURL,
        from_='+442030954643',
        to='+447445678954'
    )

    """Respond to incoming messages with a friendly SMS."""
    # Start our response
    resp = MessagingResponse()

    # Add a message
    resp.message(mapURL)

    return str(resp)

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

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

Любая помощь высоко ценится, спасибо!

Ответы [ 2 ]

0 голосов
/ 17 июля 2018

Разработчик Twilio здесь.

Вам не нужно отвечать на входящее сообщение, и вы можете избежать этого, возвращая пустой ответ TwiML.

В качестве дополнительного выигрыша вам не нужно вызывать API, чтобы получить тело последнего отправленного сообщения. Это будет доступно в параметрах запроса POST для конечной точки. Вы можете получить к ним доступ через request.form, поэтому параметр Body будет доступен в request.form['Body'].

Попробуйте что-то вроде этого:

# /usr/bin/env python
# Download the twilio-python library from twilio.com/docs/libraries/python
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse


# Download the helper library from https://www.twilio.com/docs/python/install
from twilio.rest import Client

# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'account_sid'
auth_token = 'auth_token'
client = Client(account_sid, auth_token)

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def sms_reply():
    coord = request.form['Body']
    lat,lon = coord.split(":")
    mapURL = "https://www.google.com/maps/search/?api=1&query=" + lat + "," + lon

    message = client.messages.create(
        body=mapURL,
        from_='+442030954643',
        to='+447445678954'
    )

    # Start our empty response
    resp = MessagingResponse()
    return str(resp)

if __name__ == "__main__":
    app.run(debug=True)
0 голосов
/ 05 июля 2018

Это потому, что ваш вывод в вашей функции sms_reply возвращает TwiML, который отправляет сообщение. Я думаю, что это нормально иметь обратную связь с сервисом. Если вы не хотите отвечать с помощью mapURL, вы можете просто сказать «Спасибо».

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

...