Сообщения Twilio WhatsApp находятся в очереди - PullRequest
0 голосов
/ 15 марта 2020

Хорошо, я получил разрешение от WhatsApp и Twilio (после проверки Facebook Business) на использование API WhatsApp для отправки напоминаний о встречах моим клиентам. Я настроил шаблоны сообщений, и они тоже были утверждены. Проверьте изображение ниже:

Twilio approval

Я написал код в Python, где я выбираю свои данные с сервера PostgreSQL, размещенного в облаке ( используя psycopg2), а затем отправляет сообщения на номера телефонов, полученные с помощью запроса. Вот код:

from twilio.rest import Client
import psycopg2
import time

account_sid = 'AC54xxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'f1384yyyyyyyyyyyyyyyyyyyyyyyyyyy'

connection_string = ""

conn = psycopg2.connect(user = "xxxx",
                    password = "yyyyyy",
                    host = "zzzzzzzzzzzzzzz.zzzzzzzzzzzz",
                    port = "ABCD",
                    database = "some_db")

cur = conn.cursor()
cur.execute("""query to pick data""")

rows = cur.fetchall()

client_phone_list = []
phone_list_not_received = []
session_date_list = []
session_time_list = []
client_first_name_list = []

for row in rows:
    session_date_list.append(row[0])
    session_time_list.append(row[1])
    client_first_name_list.append(row[2])
    client_phone_list.append(row[3])

cur.close()
conn.close()

client = Client(account_sid, auth_token)

message_reminder_template = """Hello {},

This is a reminder about your session today at {}. Please be on time to utilize the full length of 
the session and avoid distress :)

We look forward to taking care of you!"""

for i in range(len(client_phone_list)):
    first_name = client_first_name_list[i]
    appointment_time = session_time_list[i]
    message_body = message_reminder_template.format(first_name, appointment_time)
    print(message_body)

message = client.messages.create(body = str(message_body),
                                 from_ = 'whatsapp:+1(mytwilionumber)',
                                 to = 'whatsapp:+91'+client_phone_list[i])
time.sleep(10)
text_status = message.status
print(text_status)

Всякий раз, когда я запускаю этот код, возвращаемое состояние сообщения всегда «ставится в очередь». Я проверил, что я использую не «Тестовые учетные данные», а «Живые учетные данные».

Я также проверил error_code и error_message, которые возвращаются как NULL. Так что ошибки нет, но сообщения не отправляются. Как я могу это изменить?

Любая помощь будет принята с благодарностью.

Также обратите внимание, что тело сообщения, использованное в приведенном выше коде, утверждено в качестве шаблона из WhatsApp.

1 Ответ

0 голосов
/ 16 марта 2020

Twilio developer evangelist здесь.

Когда вы сделаете запрос API на отправку сообщения, статус будет возвращен коду в виде «в очереди». Вот что здесь написано в вашем коде:

message = client.messages.create(body = str(message_body),
                                 from_ = 'whatsapp:+1(mytwilionumber)',
                                 to = 'whatsapp:+91'+client_phone_list[i])

То, что вы делаете дальше, не сработает:

time.sleep(10)
text_status = message.status
print(text_status)

Ожидание 10 секунд и чтение состояния из объекта сообщения, который был возвращен когда вы создали сообщение, оно все равно вернется в очередь.

Если вы хотите получить статус сообщения через 10 секунд, чтобы проверить, было ли оно отправлено, вам нужно будет сделать второй вызов API сообщений , например:

time.sleep(10)
latest_message = client.messages(message.sid).fetch()
print(latest_message.status)

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

Дайте мне знать, помогло ли это вообще.

...