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

Reply via email to