OfflineMessaging
Version 16 (Adrian Georgescu, 10/31/2012 09:34 am)
1 | 8 | Adrian Georgescu | h1. Offline Message Storage Application |
---|---|---|---|
2 | 1 | Adrian Georgescu | |
3 | 16 | Adrian Georgescu | For this to work well, both voice and chat offline messaging must be handled by SylkServer, Asterisk will be dropped. |
4 | 16 | Adrian Georgescu | |
5 | 13 | Saúl Ibarra Corretgé | h2. Approach 1 |
6 | 13 | Saúl Ibarra Corretgé | |
7 | 10 | Adrian Georgescu | * Add failure route to OpenSIPS for chat sessions |
8 | 4 | Adrian Georgescu | * SylkServer answers the session in behalf of the called user |
9 | 11 | Adrian Georgescu | * SylkServer sends an automatic answer with 'I am offline but you can type a message' |
10 | 12 | Adrian Georgescu | * Session is kept open for 90 seconds so that remote party has the chance to write something if he did not already before connect |
11 | 3 | Adrian Georgescu | * Session is closed and saved to local history database |
12 | 5 | Adrian Georgescu | * SylkServer detects when targeted user comes online |
13 | 2 | Adrian Georgescu | * Establish a new session to the user that came online and fake the original caller, deliver the stored messages, hangup and wipe delivered messages |
14 | 1 | Adrian Georgescu | |
15 | 13 | Saúl Ibarra Corretgé | h2. Approach 2: VoiceMail style |
16 | 13 | Saúl Ibarra Corretgé | |
17 | 13 | Saúl Ibarra Corretgé | * Add failure route to OpenSIPS for chat sessions |
18 | 13 | Saúl Ibarra Corretgé | * SylkServer answers the session in behalf of the called user |
19 | 13 | Saúl Ibarra Corretgé | * SylkServer sends an automatic answer with 'I am offline but you can type a message' |
20 | 13 | Saúl Ibarra Corretgé | * Every time a chat message is received SylkServer sends a MWI (RFC 3842) PUBLISH on behalf of the caller to the proxy. |
21 | 13 | Saúl Ibarra Corretgé | The payload contains Text-Messages instead of Voice-Messages (RFC 3458, sec 6.2). |
22 | 13 | Saúl Ibarra Corretgé | * When the user comes back online she will subscribe to MWI and learn that she has offline text messages waiting. She can get them by starting a chat session to the URI in the Message-Account field of the MWI payload. |
23 | 13 | Saúl Ibarra Corretgé | * When the user fetches all messages SylkServer will terminate the session and send one last PUBLISH indicating that there are no new offline messages. |
24 | 13 | Saúl Ibarra Corretgé | * SylkServer will provide a single URI for all users to fetch messages, the From header URI will be used to select the appropriate user. This assumes SylkServer is deployed behind a SIP proxy, which a by-design feature of SylkServer. |
25 | 13 | Saúl Ibarra Corretgé | |
26 | 13 | Saúl Ibarra Corretgé | Things to be clarified: |
27 | 13 | Saúl Ibarra Corretgé | |
28 | 13 | Saúl Ibarra Corretgé | * What happens if the user has both voice and text messages waiting? Does OpenSIPS aggregate payloads? Do we care? SylkServer can keep publising until the user fetches the offline messages, but Asterisk won't. |
29 | 16 | Adrian Georgescu | * Audio voicemail can be stored like files, using MSRP file pull, the client may fetch them using file transfer sessions |
30 | 1 | Adrian Georgescu | |
31 | 15 | Saúl Ibarra Corretgé | h2. Approach 3: VoiceMail style (refined) |
32 | 1 | Adrian Georgescu | |
33 | 15 | Saúl Ibarra Corretgé | * Add failure route to OpenSIPS for chat sessions |
34 | 15 | Saúl Ibarra Corretgé | * SylkServer answers the session in behalf of the called user |
35 | 15 | Saúl Ibarra Corretgé | * SylkServer sends an automatic answer with 'I am offline but you can type a message' |
36 | 15 | Saúl Ibarra Corretgé | * When the user comes back online she will subscribe to MWI and learn that she has offline text messages waiting. She can get them by starting a chat session to the URI in the Message-Account field of the MWI payload. |
37 | 15 | Saúl Ibarra Corretgé | * The SIP client will send this second MWI subscription to himself but with a Sylk-App: offline-messages header to the proxy, which will route that SUBSCRIBE to SylkServer, acting as an endpoint. |
38 | 15 | Saúl Ibarra Corretgé | * SylkServer sends a MWI (RFC 3842) NOTIFY which payload contains Text-Messages instead of Voice-Messages (RFC 3458, sec 6.2). |
39 | 15 | Saúl Ibarra Corretgé | * When the user fetches all messages SylkServer will terminate the session and send a NOTIFY indicating that there are no new offline messages. |
40 | 15 | Saúl Ibarra Corretgé | * SylkServer will provide a single URI for all users to fetch messages, the From header URI will be used to select the appropriate user. This assumes SylkServer is deployed behind a SIP proxy, which is a by-design feature of SylkServer. |
41 | 15 | Saúl Ibarra Corretgé | |
42 | 14 | Saúl Ibarra Corretgé | |
43 | 1 | Adrian Georgescu | |
44 | 1 | Adrian Georgescu | |
45 | 1 | Adrian Georgescu |