【问题标题】:Twilio WhatsApp messages are in 'queued' statusTwilio WhatsApp 消息处于“排队”状态
【发布时间】:2020-06-26 20:16:14
【问题描述】:

好的,所以我得到了 WhatsApp 和 Twilio 的批准(在 Facebook Business 验证之后)使用 WhatsApp API 向我的客户发送约会提醒。我配置了消息模板,它们也获得了批准。查看下图:

我用 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)

每当我运行此代码时,返回的消息状态总是“排队”。我检查过我使用的不是“测试凭据”而是“实时凭据”。

我还检查了返回为 NULL 的 error_code 和 error_message。所以没有错误,但没有发送消息。我该如何改变呢?

任何帮助将不胜感激。

另请注意,上述代码中使用的消息正文已批准作为来自 WhatsApp 的模板。

【问题讨论】:

  • 您是否查看过控制台中的 Twilio 调试器,看看是否有任何事件记录在那里,twilio.com/docs/usage/troubleshooting/…?另外,您能否发送一条单独的消息(使用不同的批准模板),看看结果是什么,按照这里的代码 sn-ps,twilio.com/docs/sms/whatsapp/quickstart。如果两者都没有阐明,请在 help@twilio.com 上开一张票,并附上您原始帖子的详细信息,下一步将是上述结果。
  • 我进入了 Twilio 调试器,但那里没有任何事件。但是当我查看短信日志时,我发现了这个:link。错误 63016 - 请使用模板。但我查看了我批准的模板,它与消息完全匹配。批准的模板:link
  • 在这种情况下,我建议发送电子邮件至 help@twilio.com(或从您的 Twilio 控制台中打开票证),以便他们深入研究问题。如果您有完全匹配的模板,它不应该拒绝该消息。
  • 我已通过提出请求联系了 Twilio 支持。希望尽快得到解决方案。一旦有人遇到同样的问题,我会尽快发布解决方案。

标签: twilio twilio-api


【解决方案1】:

这里是 Twilio 开发者宣传员。

在您发出 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 秒后获取消息状态以查看它是否已发送,那么您需要再次调用 messages API,如下所示:

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

如需更有效地跟踪消息状态的方法,请查看此tutorial on receiving webhooks for message status updates

让我知道这是否有帮助。

【讨论】:

  • 好的,谢谢您的信息。我将进行必要的更改以获取状态。虽然它仍然没有回答我的问题。无论如何都不会发送消息(消息的状态是次要的)。当我进入 SMS 日志时,它说消息由于错误 63016 而失败 - 请使用模板。但我使用的是 Twilio 已经批准的模板。参考这些图片:linklink
  • 您的问题是为什么邮件处于“排队”状态,这是我试图回答的问题。我看到您现在已经联系了支持人员,他们最适合检查您的模板为何无法正常工作。
  • 我将其标记为答案,因为您是对的。我以后会偶然发现它。谢谢你。但这是我第一次使用 Twilio 发送 WhatsApp 消息,它非常复杂(从 Facebook 商业验证到 WhatsApp 和 WhatsApp 商业帐户的批准)并且非常耗时。在投入了这么多时间之后,即使我的消息完全符合预期的模板,我也无法发送一条消息。
  • 我明白,您需要跳过的圈子才能达到这个阶段令人沮丧。很抱歉,您已经做到了这一点,但发现您的模板无法按预期工作。我刚刚看了那些图片,在我看来模板中的a void 中可能有一个空格,但不是您的消息。会不会是这个问题?
  • 您只是看到空间,因为窗口已最小化。实际模板中没有空格。刚检查。也没有得到 Twilio 支持的回复。已经一天了!
猜你喜欢
  • 2022-09-30
  • 2013-08-05
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
相关资源
最近更新 更多