Excuse my somewhat tardy reply to this thread, but since you brought up AMD: On Jun 16, 2014, at 11:47 AM, Ben Langfeld <ben@xxxxxxxxxxx> wrote:
We are in the process right now of creating an application that needs asynchronous AMD. Specifically, we are implementing LumenVox’s CPA product[1] and the use case is this: * Reminder call is placed to recipient * Recipient answers (don’t yet know if it is a human or a machine) * Outgoing message begins to play * If a human is detected, stop playback and connect to an agent * If a machine is detected, keep playing back until… * If a beep is detected, stop and restart playback The only way to achieve this is if we can have an async speech recognizer running while simultaneously playing output, which isn’t possible with Dialplan today, and would require a specialized app even if it were implemented that way. Instead, we are hoping to have a lower-level primitive to do signals detection and playback asynchronously. In an ideal world, ARI would provide primitives for playback (file or TTS) and input (DTMF or ASR). Some more background from discussion related to our project, courtesy Ben Langfeld: The asynchronous example is more complex. While Adhearsion sees both the input and output components as being asynchronous, this is a fake facility provided by Punchblock to make Asterisk look like an async server when it is not. Both components are implemented atop synchronous Asterisk dialplan applications: For output: This means that given the simplest approach to implementation discussed above, the output would be executed, followed by the input being queued and executed once the output had completed. If we were to swap the two, not only would we now have a coordination problem where we have to queue cancellation of the output to paper over the race condition introduced by potentially being asked to stop it before we have a handle on it, we would have the same blocking problem with So that rules out combining one of the UniMRCP dialplan applications with the
The problems stated above leave us with only one option: extra capability must be introduced to Asterisk in order to handle simultaneous dialplan applications, or to introduce a true async version of In short, the adhearsion-cpa API can be honoured for the synchronous detection case trivially. It cannot be honoured for the async case, nor can any equivalent alternative be introduced, without changes to Asterisk. /BAK/ -- Ben Klang Principal/Technology Strategist, Mojo Lingo +1.404.475.4841 Mojo Lingo -- Voice applications that work like magic Twitter: @MojoLingo
|
Attachment:
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ asterisk-app-dev mailing list asterisk-app-dev@xxxxxxxxxxxxxxxx http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev