[asterisk-dev] Proposed change to External Media API
marek
cervajs64 at gmail.com
Fri Oct 18 09:38:14 CDT 2019
+1 for things easier for ARI developers coming from web world
and ... we look forward to "sample speech to text application" :)
have a nice weekend
Marek
Dne 18/10/2019 v 14:55 George Joseph napsal(a):
> When we created the External Media addition to ARI we created an
> ExternalMedia object to be returned from the channels/externalMedia
> REST endpoint. This object contained the channel object that was
> created plus local_address and local_port attributes (which are also
> in the Channel variables). At the time, we thought that creating an
> ExternalMedia object would give us more flexibility in the future but
> as we created the sample speech to text application, we discovered
> that it doesn't work so well with ARI client libraries that a) don't
> have the ExternalMedia object defined and/or b) can't promote the
> embedded channel structure to a first-class Channel object.
>
> Example:
>
> A common pattern using the node-ari-client is to create a new Channel
> object, attach an event handler to it, then call originate on it like
> so...
>
> chan = ari.channels.Channel();
> chan.on('StasisStart', <add chan to bridge>);
> chan.originate(...);
>
> With the current ExternalMedia API:
>
> chan = ari.channels.Channel();
> chan.on('StasisStart', <add chan to bridge>);
> chan.externalMedia(...);
>
> This doesn't work however because the return from
> channels/externalMedia isn't a Channel. It's an ExternalMedia object
> with an chlld object that looks like a Channel but has no Channel
> behavior attached to it. The event handler added to chan will never
> get called and you can't attach handlers or perform any operations on
> ExternalMedia.channel because it's just a plain object, not an
> instance of Channel.
>
> Realistically, it doesn't make sense to force client library
> implementations to create special logic to promote the
> ExternalMedia.channel object into an instance of Channel and since
> External Media is a new capability anyway, it seems that the least
> painful solution is to remove the ExternalMedia object and have
> channels/externalMedia return a Channel object directly, just like
> channels/create and channels/originate. As I described above, the
> only other attributes of ExternalMedia were the local address and port
> and they're already available in the Channel variables anyway.
>
> I would think that this change would make things easier for ARI
> developers but I wanted to make sure that you knew about it in advance
> and had a chance to comment. There will be a Gerrit review up for
> this change later this morning.
>
> Also... I mentioned the "sample speech to text application" above.
> It's working and will be published next week.
>
> Comments? Questions?
>
> --
> *George Joseph*
> Digium - A Sangoma Company | Software Developer | Software Engineering
> 445 Jan Davis Drive NW - Huntsville, AL 35806 - US
> direct/fax: +1 256 428 6012
> Check us out at: https://digium.com <https://digium.com/> ·
> https://sangoma.com <https://sangoma.com/>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20191018/5d3012b5/attachment-0001.html>
More information about the asterisk-dev
mailing list