Yowsup 如何获取 WhatsApp 电话号码
我正在尝试了解如何使用Yowsup这个库来与WhatsApp互动。我可以发送消息,也可以接收消息,但我想知道如何获取电话号码以开始新的聊天。换句话说,我想开发一个可以与WhatsApp用户互动的电脑应用程序,目前我能做到以下几点:
- 我通过这个命令获得了WhatsApp服务器的访问权限:
python yowsup-cli -c config.example --requestcode sms
和python yowsup-cli -c config.example --register xxx-xxx
- 我可以通过这个命令发送消息:
python yowsup-cli -c config.example -s 39xxxxxxxxxx "!"
- 我可以通过这个命令进行互动对话:
python yowsup-cli -c config.example -i 39xxxxxxxxxx
- 我可以通过这个命令获取我收到的所有消息:
python yowsup-cli -c config.example -l
现在,当用户给我发消息时,我该如何与他/她互动呢?我想我应该从命令python yowsup-cli -c config.example -l
中获取电话号码,然后用这个命令开始新的互动对话:python yowsup-cli -c config.example -i 39xxxxxxxxxx
,其中的39xxxxxxxxxx就是我从之前的命令中得到的用户号码。希望你能帮我。
1 个回答
5
我觉得你不应该把yowsup-cli用作开发工具。它其实是个简单的演示客户端,功能非常有限。
如果你查看一下yowsup-cli的源代码,你会发现它实际上是引入了一些示例代码来提供命令行消息功能。
在这段代码中,你会看到你的命令python yowsup-cli -c config.example -l
实际上是调用了
wa = WhatsappListenerClient(args['keepalive'], args['autoack'])
wa.login(login, password)
而这个示例监听客户端则注册了一个回调函数,用于处理message_received
信号。
self.signalsInterface.registerListener("message_received", self.onMessageReceived)
现在如果你仔细看看这个函数
def onMessageReceived(self, messageId, jid, messageContent, timestamp, wantsReceipt, pushName, isBroadCast):
formattedDate = datetime.datetime.fromtimestamp(timestamp).strftime('%d-%m-%Y %H:%M')
print("%s [%s]:%s"%(jid, formattedDate, messageContent))
if wantsReceipt and self.sendReceipts:
self.methodsInterface.call("message_ack", (jid, messageId))
你会发现jid
,也就是你说需要的电话号码,实际上在这个信号的参数列表中。如果你想在用户给你发消息后与他互动,我猜你应该把jid或电话号码存储在你自己对这个信号的订阅中。
总之,不要直接使用yowsup-cli进行开发。可以把它当作一个起点,来构建你自己的应用。祝你好运!