我想知道如何使用whatsApp的Yowsup库。我可以发送信息,也可以接收信息,但我有兴趣获取电话号码,开始新的聊天。
换言之,我将开发一个可以与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
其中39XXXXXXXXX是我用上一个命令得到的用户的号码。
我希望你能帮助我
最佳答案
我认为您不想将yowsup cli用于开发目的。我认为它是一个功能非常有限的简单演示客户端。
如果你看一下yowsup-cli source code你会发现它实际上导入了included examples来提供命令行消息功能。
您在代码中看到的是
wa = WhatsappListenerClient(args['keepalive'], args['autoack'])
wa.login(login, password)
另一方面,这个示例侦听器客户机有一个注册到
python yowsup-cli -c config.example -l
信号的回调函数。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))
您可以在parameter list of this signal上看到
message_received
和您所需的电话号码。如果您希望在用户向您发送消息后与他进行交互,我猜您应该将jid或电话号码存储在您自己的用户中,以接收此信号。简而言之,不要使用yowsup cli本身进行开发。以它为起点构建自己的应用程序。祝你好运!