Trying to get my head around threads...
I'm in the process of tidying up the way in which our dialplans and scripts are constructed, but am slightly struggling to understand how threads relate to channels and stuff like that. For example, we have a call that comes in, a bridge is made to a recipient and at the same time, we bind ** to a "mid-call menu" so that the b-party can hit ** and then do stuff (eg. initiate a transfer). This has all been working fine using a basic dialplan approach, but as we add more features in, the dialplans are getting somewhat unreadable and hard to understand. I would like to adopt a more modular approach such that if we wanted (for example) an a-party mid-call menu, we would share the same code, but with flags to indicate the differences in call handling. So the idea of trying to go a little more lua-centric strikes me as a good one in theory. However, my first attempt at this seems to have fallen foul of the "defying physics" problem that Anthony has mentioned before - when the b-party hits **, the a-party doesn't get on-hold music (their line just goes quiet) until the b-party hangs up. I'll be looking into the differences between the working script (with dialplan) and the prototypical (lua-rich) version, but in the meantime there is something about the working script that seems to be using some undocumented feature - uuid_transfer with -aleg (not sure what this is doing, if indeed anything at all!). Also, I get the impression that bgapi doesn't really work from within lua. I've seen reference to running luarun within lua to start a new thread, but am unsure as to how to tame it.
Just realised I forgot to ask my question, which is: Are there any recommended resources that demonstrate a Lua-rich approach to handling calls? Particularly anything showing things like attended transfer that can demonstrate working multi-threaded code.
participants (1)
-
Alex Lake