【问题标题】:Twilio SMS message not sending when a user tweets Tweepy用户在推特 Tweepy 时未发送 Twilio SMS 消息
【发布时间】:2021-07-10 22:41:57
【问题描述】:

每当某个用户发推文时,我都会尝试从一个 Twilio 电话号码向另一个号码发送 SMS 消息。代码如下:

import tweepy
from twilio.rest import Client

consumer_key = CONSUMER_KEY
consumer_secret = CONSUMER_SECRET
access_token = ACCESS_TOKEN
access_token_secret = ACCESS_TOKEN_SECRET

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

client = Client(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        if status.user.id_str == "14173315":
            message = client.messages \
                .create(
                    body="Success!",
                    from_=TWILIO_PHONE_NUMBER_1,
                    to=TWILIO_PHONE_NUMBER_2
                )

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(follow=["14173315"])

这是托管在 Heroku 工作人员测功机上的,因此当应用程序上线时,Tweepy 侦听器始终在侦听来自 Twitter ID 为 14173315 的用户的推文。但是,只要 Twitter ID 为 14173315 的用户发了推文,就没有 SMS消息正在发送。我知道这一点是因为我检查了 Twilio SMS 消息日志并且两个电话号码之间没有显示任何消息。我不知道为什么会这样。有任何想法吗?谢谢

【问题讨论】:

  • 您的应用程序是否有任何错误?你的 Twitter 流 API 是否肯定会收到推文? (另外一个问题,您在两个 Twilio 号码之间发送消息有什么原因吗?)
  • 有一个原因,是的,twitter 流 api 正在接收我相信的推文,我会仔细检查
  • 此外,它之前的工作是“to”电话号码不是 Twilio 电话号码,“to”电话号码是我的个人电话号码。我不得不将其设为另一个 Twilio 电话号码,因为 T-Mobile(包括 Sprint)尚未推出他们的 A2P 10DLC 解决方案。所以我不确定为什么当“收件人”电话号码是另一个 Twilio 电话号码时没有发送任何消息。
  • 您是否看到应用程序出现错误?或者您在Twilio debugger 中看到任何错误?您可能无法在自己的 Twilio 号码之间发送消息以避免无限循环。
  • 我在 Twilio 调试器中没有看到任何东西,我认为这是因为它没有注册任何消息正在发送。我一直在检查,每次发生推文时,Twilio 消息日志中都没有显示任何消息。我需要能够向某种电话号码发送消息,并且由于我不能使用我的个人电话号码,我购买了另一个 Twilio 电话号码来发送消息。因此,由于这个无限循环问题,我无法在我自己的 Twilio 电话号码之间发送消息?

标签: python heroku twilio tweepy


【解决方案1】:

这里是 Twilio 开发者宣传员。

经过长时间的交谈,结果证明这不是 Twitter 流 API 或 Twilio 的问题。相反,工作进程没有在 Heroku 上运行。

在 Heroku 上运行工作进程时,您需要确保工作进程由 Heroku 启动。默认情况下,Heroku 将启动一个“web”进程,但您需要告诉它专门启动其他进程。

要检查是否有任何进程在运行,请运行:

heroku ps

如果您在Procfile 中定义了一个名为“worker”的进程,您可以使用以下命令确保它在一个测功机中运行:

heroku ps:scale worker=1

你可以阅读更多关于scaling dynos in the Heroku documentation的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多