While fetching Chat History I am Not getting Both user History from Openfire
Asked Answered
H

1

11

I fetched History from openfire by installing open fire plugin in the open fire and tried this code.

let iq1 = DDXMLElement(name: "iq")
    iq1.addAttribute(withName: "type", stringValue: "get")
    iq1.addAttribute(withName: "id", stringValue: "0")
    let retrieve = DDXMLElement(name: "retrieve", xmlns: "urn:xmpp:archive")
    retrieve?.addAttribute(withName: "with", stringValue: "[email protected]")
    let set = DDXMLElement(name: "set", xmlns: "http://jabber.org/protocol/rsm")
    let max = DDXMLElement(name: "max", stringValue: "50")
    iq1.addChild(retrieve!)
    retrieve?.addChild(set!)
    set?.addChild(max)
    stream?.send(iq1 )

Now i am not getting history from Both Side. here is the result that i get.

<iq xmlns="jabber:client" 
type="result" 
id="0" 
to="[email protected]/5qsinh1syg">

<chat xmlns="urn:xmpp:archive" 
with="[email protected]" 
start="2017-02-07T06:28:33.691Z">

	<from secs="0">
	<body>hello</body>
	</from>

	<from secs="405">
	<body>hiii</body>
	</from>

	<from secs="580">
	<body>Hey</body>
	</from>

	<from secs="599">
	<body>HooooE</body>
	</from>

	<from secs="628">
	<body>hOo</body>
	</from>

	<from secs="907">
	<body>Raman here</body>
	</from>
	
	<from secs="931">
	<body>Raman here ONE</body>
	</from>

	<from secs="1273">
	<body>Raman here</body>
	</from>

	<from secs="1558">
	<body> Raman from SPark </body>
	</from>

	<from secs="1571">
	<body> Raman from SPark One</body>
	</from>

	<from secs="1782">
	<body>Raman from SPark </body>
	</from>

	<from secs="2651">
	<body>Raman FiVE</body>
	</from>

	<from secs="2810">
	<body>Raman Three</body>
	</from>

	<from secs="2810">
	<body>Raman FOur</body>
	</from>

	<from secs="3534">
	<body>RAMAN SIX</body>
	</from>

	<from secs="4105">
	<body>Raman OKK</body>
	</from>

	<from secs="4113">
	<body>OKKK l</body>
	</from>

	<from secs="4130">
	<body>UST</body>
	</from>

	<set xmlns="http://jabber.org/protocol/rsm">
		<first index="0">0</first>
		<last>17</last>
		<count>18</count>
	</set>
</chat>
</iq>

This is all the message of RAMAN not BENTICk as this two user involved in chatting while getting history i only get the message of RAMAN. not BENTICk How to get history from both side user.

Please help.

Horary answered 7/2, 2017 at 7:47 Comment(19)
are you using LDAP or in built openfire database?Walsh
it's Default openfire database.Horary
have you Enabled Message auditing from Server > server settings -> Message Audit Policy?Walsh
What about Server -> Archiving -> Archiving settings (message and meta-data settings)?Walsh
If you make changes you need to restart the server to take effectWalsh
There folder log, maximum size of all files is 1000 mb, maximum file size 10 mb,Maximum days to archive: -1,Flush Interval (seconds):120, and Packets to audit: nothing is checked. Ignore packets from/to users: nothin is written. Queued packets: 0 In Message Audit Policy is there is need to change anythingHorary
Archiving setting is enabled and added idle time 10 both check one to one archiving and group chat, max time 60 max message age 60 and retrieval message 30 daysHorary
you need to check conversation state archiving, to enable you fetch history, or whatever state you prefer.Walsh
the last thing I can think of is are you able to pull the Roster of all clients? I have a chat API and once I log in all histories are auto fetched by pulling Rosters.Walsh
Yes i pulled all Roster. and when one login i get all Offline Message.. OFFLINE MESSAGE not whole conversationHorary
well the last thing I can advise is that you have proper listeners for the chat messages, and any other types maybe group chat. If your packet listeners are good and all the settings are correct, you should not only get offline history but all history, there was also a setting in openfire that I changed which specifically asks of histories, it asks how many days you want to back date history and if you want all history from users saved, its there if you need help I can direct you towards it, but once I did that I got all history. Openfire is a bit hard for info.Walsh
Go to Group Chat -> Group Chat settings -> History settings and see if you have it well setup, it might affect two users as well as multiple users. Good luck!Walsh
I have changes their Show Entire Chat History by replacing Show a Specific Number of Messages that was 25. but still same issueHorary
Hi Mad, you asked for "chat" messages 1vs1 and all seems to be correct. Are you triyn' to retreive groupchat messages indeed??Nutwood
@Nutwood No it's One to one chat message retrieval not group chatHorary
Ok, to me your IQ seems correct. I really don't know what happens, what I can suggest, like a mother that asks if you already looked for shorts in proper drawer, if message "to" are actually stored in database (maybe you missed to save) and if the provided reply it's the Openfire one or what you parsed (in this case, check with a client like Spark against the same Openfire if the same request has the same reply, if not the issue is on client that ignores "to" tags)Nutwood
@Nutwood I have checked so many Time where i am doing wrong. But don't know why this happen confused from Two days. still not getting any solutions...Horary
@MadBurea Please confirm from Openfire database (ofMessageArchive table) that if your messages exist there? The plugin reads messages from here and adds "from", "to" tags on that basis.Heyman
@ShoaibAhmadGondal Yes i can see my message in Archive setting. Each and every message is there even All conversation message is present there..Horary
D
-1

I have implemented the same to get the Message to and from by sending the given iq And I am getting the proper result.

let iQ = DDXMLElement.element(withName: "iq") as! DDXMLElement
        iQ.addAttribute(withName: "type", stringValue: "get")
                iQ.addAttribute(withName: "id", stringValue: (xmppHandler.xmppStream?.generateUUID())!)
        let retrieve = DDXMLElement(name: "retrieve", xmlns: "urn:xmpp:archive")
        retrieve?.addAttribute(withName: "with", stringValue: "\(JID!)@\(Utility.hostname)")

        let set = DDXMLElement.element(withName: "set") as! DDXMLElement
        set.addAttribute(withName: "xmlns", stringValue: "http://jabber.org/protocol/rsm")
        let max = DDXMLElement.element(withName: "max") as! DDXMLElement
        max.stringValue = "10"
        max.addAttribute(withName:"xmlns", stringValue: "http://jabber.org/protocol/rsm")

        iQ.addChild(retrieve!)
        retrieve?.addChild(set)
        set.addChild(max as DDXMLNode)
        xmppHandler.xmppStream?.send(iQ)

<iq type="get" id="7705EEC5-3385-42D4-B748-B39C204ADB90"><retrieve xmlns="urn:xmpp:archive" with="[email protected]"><set xmlns="http://jabber.org/protocol/rsm"><max xmlns="http://jabber.org/protocol/rsm">10</max></set></retrieve></iq>

Response

    <iq xmlns="jabber:client" type="result" id="7705EEC5-3385-42D4-B748-B39C204ADB90" to="[email protected]/Smack">
  <chat xmlns="urn:xmpp:archive" with="[email protected]" start="2017-02-28T09:55:27.068Z">
    <from secs="0" jid="[email protected]">
      <body>Hiii rajeev</body>
    </from>
    <to secs="52">
      <body>Hi
        How r u</body>
    </to>
   <from secs="15" jid="[email protected]"><body>I am good</body></from>
   <to secs="8"><body>What abt u</body></to>
   <to secs="169"><body>Hello testing chat</body></to>
   <from secs="10" jid="[email protected]"><body>Good</body></from>
   <from secs="5" jid="[email protected]"><body>Continue </body></from>
   <to secs="834"><body>Ok
    </body></to>
   <to secs="8"><body>Nice chat
    </body></to>
   <from secs="232" jid="[email protected]"><body>Heelo</body></from>
   <set xmlns="http://jabber.org/protocol/rsm"><first index="0">0</first>     <last>9</last><count>574</count></set></chat></iq>
Dalessio answered 6/3, 2017 at 18:36 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.