On 4/1/19 4:22 PM, Joshua C. Colp wrote:
On Sat, Mar 30, 2019, at 7:45 PM, Sungtae Kim wrote:
Hi Asterisk team,

I want to talk about some feature for the ARI.

Currently, ARI doesn't allow executing the Asterisk application.

But this makes ARI users giving up and tired to use the ARI.
Because to use the Application, it has to be exit from the Stasis and
jump to the dialplan to executing the application. And have to execute
the Stasis() again to back to Stasis.
I think using this as a way to way to determine any missing gaps in ARI and 
extend it is good, but I'm hesitant towards allowing arbitrary dialplan 
application execution. The cases I know of are tone recognition, speech 
recognition, and faxing.

Agree, I've just focused on the feature and benefits. But I want to see the penalties as well. That's why we're having a discussion here.

Generally, this is working same as the application in dialplan. It would be the same result. But I haven't done that test with all of applications yet...

Since it makes the channel needs to be exit from the Stasis, ARI can not
control the call while it's not in the Stasis. This makes also hard to
control the call.

So, I was thinking how about make the stasis/ARI possible to execute the
applications? And I've created ticket for adding this feature to ARI
which is enabling the ARI to executing the application.
https://issues.asterisk.org/jira/browse/ASTERISK-28365
So ARI wasn't written or designed to really function the same way as AGI for 
example. It expects to be the final owner of a channel. This has the 
consequence that it can be unsafe to execute dialplan applications which they 
themselves want to be the final owner of the channel on. Your change overcame 
this to a degree by making it blocking. This is problematic, though, as it 
means that the ARI application has lost its control and can't do anything until 
the dialplan application is over. It can't, for example, stop the dialplan 
application execution and regain control. The queue of any requests is blocked, 
thus the ARI application is blocked.
The application making a block is true, but ARI still control the flow. Because the channel is still in the stasis(), the ARI can send the hangup() or hangup with AST_SOFTHANGUP_ASYNCGOTO(I didn't implement this yet) to exit from the application and it can give the control back to ARI.
I'd also wonder what certain applications would do and the resulting events. 
What happens if you execute Dial, or ConfBridge, or perform a transfer while in 
a dialplan application in ARI?

Dial: It created a new channel and connected to each other(put in the same bridge) And after hangup the dialed channel, the original channel gets back to waiting for ARI request.

Confbridge: It created new bridge and stayed there. After destroying the bridge, the original channel gets back to waiting for ARI request.

Transfer: Didn't work. It didn't do the transfer but no hangup as well. Haven't look that in depth, will figure out why.

Because if the Stasis calls the this ARI, the application taking the ownership(sort of).

But the Stasis()/ARI still can send the ARI request to the channel.

I agree that some of the application(i.e. park) doesn't really respect the AST_SOFTHANGUP_ASYNCGOTO signal somehow. But I think this is not this feature's problem this is the application's problem. Because I can see the same behaviors with 'Redirect' AMI action as well. And this could be fixed in another way.

There's a lot of unknowns as to how exactly everything would behave in my mind 
and they'd need to be answered.

Sure, how could I help? :)

Thank you.

Kind regards,
Sungtae


--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to