Editor PHP Zimo membawakan anda alat ajaib yang dipanggil "Data Dialog Meow". Alat ini boleh membantu pengguna memproses dan menganalisis data perbualan dengan cepat, serta menyediakan pengurusan data perbualan dan fungsi statistik yang mudah. Pengguna hanya perlu memasukkan teks perbualan, dan data perbualan Meow Meow boleh diproses secara automatik dan pelbagai maklumat statistik berguna boleh dijana, seperti kekerapan perbualan, analisis kata kunci, dsb. Alat ini mudah dikendalikan dan berkuasa, dan sangat sesuai untuk pengguna yang perlu menganalisis data perbualan.
Saya sedang cuba membina client tui untuk whatsapp menggunakan whatsmeow.
Selepas setengah hari mencari dan membaca dokumentasi, saya masih tidak dapat mencari cara untuk mendapatkan data perbualan satu kenalan. Sebarang bantuan amatlah dihargai.
Saya menjumpai parsewebmessage tetapi saya tidak pasti cara menggunakannya.
chatJID, err := types.ParseJID(conv.GetId()) for _, historyMsg := range conv.GetMessages() { evt, err := cli.ParseWebMessage(chatJID, historyMsg.GetMessage()) yourNormalEventHandler(evt) }
Malah, saya pun tidak pasti sama ada ini yang saya cari
Nah, anda pada asasnya memaut ke bahagian dokumentasi yang mengandungi maklumat yang anda cari. parsewebmessage
调用的返回类型是 events.message
,记录在 此处。它包含类型为 messageinfo
的 info
字段(同样, 记录在此处)。反过来,这个 messageinfo
类型嵌入 messagesource
Jenis Lihat dokumentasi di sini seperti berikut:
type messagesource struct { chat jid // the chat where the message was sent. sender jid // the user who sent the message. isfromme bool // whether the message was sent by the current user instead of someone else. isgroup bool // whether the chat is a group chat or broadcast list. // when sending a read receipt to a broadcast list message, the chat is the broadcast list // and sender is you, so this field contains the recipient of the read receipt. broadcastlistowner jid }
Jadi, untuk mendapatkan kenalan yang menghantar mesej yang diberikan, diberikan kod anda evt, err := cli.parsewebmessage()
, anda perlu menyemak:
evt, err := cli.parsewebmessage(chatjid, historymsg.getmessage()) if err != nil { // handle error, of course } fmt.printf("sender id: %s\nsent in chat: %s\n", evt.info.sender, evt.info.chat) if evt.info.isgroup { fmt.printf("%s is a group chat\n", evt.info.chat) }
Anda juga boleh melangkau mesej yang dihantar dengan hanya melakukan perkara berikut:
if evt.info.isfromme { continue }
Jenis medan evt.info.chat
dan evt.info.sender
adalah kedua-duanya jid
, Dirakam di sinievt.info.chat
和 evt.info.sender
字段的类型均为 jid
,记录在此处。此 id 类型本质上有 2 种变体:用户和服务器 jid 以及 ad-jid(用户、代理和设备)。您可以通过检查 jid.ad
. Pada asasnya terdapat 2 variasi jenis id ini: pengguna dan pelayan jid dan ad-jid (pengguna, ejen dan peranti). Anda boleh membezakan antara kedua-duanya dengan menyemak bendera jid.ad
.
Saya tidak menggunakan modul ini sama sekali, saya hanya melihat sekilas dokumentasi, tetapi dari apa yang saya faham, modul ini membolehkan anda menulis pengendali yang akan menerima events.message</code untuk segala-galanya anda terima > Taip. Dengan menyemak <code>evt.info.isgroup
, anda boleh mengetahui sama ada mesej yang kami hantar adalah dalam sembang kumpulan atau sama ada ia sesuatu dalam perbualan individu anda. Berdasarkan evt.info.sender
dan evt.info.chat
anda boleh mengetahui siapa yang menghantar mesej. evt.info.sender
sebagai jid seterusnya membolehkan anda memanggil getuserinfo Kaedah < /code> <code>events.message
类型。通过检查evt.info.isgroup
,你可以弄清楚我们发送的消息是在群聊中,还是在你们的个人对话中的事情。根据evt.info.sender
和evt.info.chat
,您可以查出消息是谁发送的。 evt.info.sender
作为 jid 反过来允许您调用 getuserinfo
方法,传入 jid,返回一个 userinfo
, masukkan jid, kembalikan objek info pengguna
seperti yang direkodkan di sini , nama paparan, gambar, status, dll...
Jadi saya rasa anda sedang mencari sesuatu yang serupa:
// some map of all messages from a given person, sent directly to you contacts := cli.GetAllContacts() // returns map[JID]ContactInfo personMsg := map[string][]*events.Message evt, err := cli.ParseWebMessage(chatJID, historyMsg.GetMessage()) if err != nil { // handle } if !evt.Info.IsFromMe && !evt.Info.IsGroup {// not a group, not sent by me info, _ := cli.GetUserInfo([]types.JID{evt.Info.Sender}) if contact, ok := contacts[info[evt.Info.Sender]; ok { msgs, ok := personMsg[contact.PushName] if !ok { msgs := []*events.Message{} } personMsg[contact.PushName] = append(msgs, evt) } }
Perhatikan bahawa jenis contatinfo
tidak muncul dalam dokumentasi serta-merta, tetapi saya terjumpanya dalam repositori.
Apa pun, saya tidak pasti apa yang anda mahu lakukan dan bagaimana/mengapa anda tersekat. Apa yang anda perlu lakukan untuk mencari maklumat ini ialah semak jenis pemulangan kaedah parsewebmessage
yang anda nyatakan, semak beberapa jenis, dan kemudian tatal melalui beberapa kaedah yang disenaraikan/didokumenkan untuk mendapatkan gambaran kasar tentang cara mendapatkan semua data yang mungkin anda perlukan...
Atas ialah kandungan terperinci Data perbualan meow. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!