Hi, I am no expert in XMPP but have been looking at this standard from a call centre operator perspective and have following comments :
1. Caller always knows the address of Callee as it gets it from Attendant in the transfer message. I suppose Callee and Attendant know about each other but I am not sure if the same could be said about Caller. It is possible to envisage the scenario where Caller is ringing a well known public number, is asked some questions by the IVR and transferred to a specific consultant based on hers/his answers. In the current proposal Attendant seems to pass Callee's address to Caller without Callee's knowledge or permission. This address could later be used to call Caller directly. 2. I think current proposal gives Caller too much control over the transfer and it should be Attendant who controls the transfer scenario. 3. Currently Callee can not indicate to Attendant that it can not accept transfer. I have modified the existing diagram to reflect these points. Unattended transfer Caller Attendant(IVR,etc) Callee | | | | session-initiate | | |----------------------->| | | ack | | |<-----------------------| | | session-accept | | |<-----------------------| | | ack | | |----------------------->| | | AUDIO (RTP) | | |<======================>| | | | | | transfer-indication | | |----------------------->| | | ack | | transfer |<-----------------------| |<-----------------------| | | ack | | |----------------------->| | | session-initiate | |------------------------------------------------>| | session-accept | |<------------------------------------------------| | ack | |------------------------------------------------>| | AUDIO (RTP) | |<===============================================>| Where transfer-indication is: <iq from='[email protected]/desk' id='transfer-indication1' to='[email protected]/phone' type='set'> <jingle xmlns='urn:xmpp:jingle:0' action='session-info' initiator='[email protected]/phone' responder='[email protected]/desk' sid='851ba2'> <transfer-indication xmlns='urn:xmpp:jingle:transfer:0' from='[email protected]/phone' transfer-placeholder='[email protected]/transfer1' transfer-id='unique-transfer-id'/> </jingle> </iq> Attendant sends Transfer back to Client. This message could also indicate that existing call between Caller and Attendant should be terminated. <iq from='[email protected]/desk' id='transfer1' to='[email protected]/phone' type='set'> <jingle xmlns='urn:xmpp:jingle:0' action='session-info' initiator='[email protected]/phone' responder='[email protected]/desk' sid='851ba2'> <transfer xmlns='urn:xmpp:jingle:transfer:0' to='[email protected]/transfer1' transfer-id='unique-transfer-id'/> </jingle> </iq> And Client initiates a new session to a placeholder address which the switch translates into a valid address. <iq from='[email protected]/desk' id='jingle3' to='[email protected]/transfer1' type='set'> <jingle xmlns='urn:xmpp:jingle:0' action='session-initiate' initiator='[email protected]/phone' sid='1a332d'> <content creator='initiator' disposition='session' name='voice'> <description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'> <payload-type id='0' name='PCMU' /> </description> <transport xmlns='urn:xmpp:jingle:transports:ice-udp:0'/> </content> <transfer xmlns='urn:xmpp:jingle:transfer:0' transfer-id='unique-transfer-id'/> </jingle> </iq> Regards Dawid Nowak
