Hello,
On 12/12/14 06:08, Konstantin M. wrote:
Hello,
I want to achieve the following schema:
- Accept an initial invite
what do you mean by 'acccept' here, send a 200ok or a 100trying and hold the INVITE in memory for a while?
If second, then see tmx module for t_suspend()/t_continue().
- Create separate dialog to different SIP server (probably with some
headers from point 1) 3. Wait until that different SIP server will complete dialog. 4. Based on result of point 3, transfer invite from 1 to the next steps or decline a call. The problem I've experienced - how to create a separate dialog and control it inside main dialog?
Uac is the module to generate new requests, you can handle the reply to it via reply_route and decide there what to do with parked INVITE.
If possible, I would use a different request (or even protocol, see evapi or jsonrpc-c modules) than invite instead of that new dialog. For example OPTIONS -- let's say you want to check if the initial caller is allowed to call, you can send the requests to a billing engine that gives the yes/no.
Depending on the scenario, might be easier to go and code in C a module -- look at async, evapi, jsonrpc-c for examples on how to suspend and resume transactions from inside a module.
Cheers, Daniel