Yowsup WhatsApp获取电话号码

8
我正在尝试理解如何使用Yowsup库来处理WhatsApp。我能够发送和接收消息,但是我想要获取电话号码以开始新的聊天。 换句话说,我将开发一款可以与WhatsApp用户交互的计算机应用程序,目前我可以执行以下操作:
  1. 通过使用此命令获得访问WhatsApp服务器:python yowsup-cli -c config.example --requestcode smspython yowsup-cli -c config.example --register xxx-xxx
  2. 使用此命令发送消息:python yowsup-cli -c config.example -s 39xxxxxxxxxx "!"
  3. 使用此命令进行交互式对话:python yowsup-cli -c config.example -i 39xxxxxxxxxx
  4. 使用此命令获取我收到的所有消息: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进行开发。将其用作构建自己应用程序的起点。祝你好运!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接