<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 30, 2014 at 10:22 AM, Nick Horelik <span dir="ltr"><<a href="mailto:nhorelik@mit.edu" target="_blank">nhorelik@mit.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div>Thank you so much for your help.  I think I mostly understand now, I just want to confirm that I'm thinking of this properly.  Basically, in the dialplan you can pass an arbitrary string to Stasis, which serves as the application name and handle by which a websocket client refers to that application.  I need to dial that extension to get a channel into it from a phone or e.g. something like, <br>


<br>client.channels.originate(endpoint="Local/hello-world@default", extension="hello-world", context="default")<br><br></div>using ari-py from anywhere if I have the extension you mentioned.  I also noticed that I need an active websocket at /ari/events?app=<appname>&api_key=<user:password> in order for the channel to remain open (for example, leaving open the wscat example in the getting started guide), otherwise it hangs up immediately.<br>
</div></div></div></div></blockquote><div><br></div><div>Correct - if there is no websocket connection (or rather, if a websocket connection was never established for the application - it's a bit more forgiving if a disconnect happens) then the Stasis application bounces the channel out. The channel isn't hung up, but it certainly isn't handed off for control to your ARI application. If Asterisk can't inform you about what a channel is doing - for example, if a channel hangs up - it isn't very safe to control it from your ARI app.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>

<br></div>I think one thing that led me astray before was that when I ran originate_example.py I got the no-json error indicated in this air-py github issue [1] and immediately assumed that I was just doing something wrong.  In fact, that example shouldn't raise an exception regardless of the appname - it just won't do anything until a phone dials an extension that triggers a Stasis command with that appname.<br>


<br></div>Does all this sound correct?  If so it sounds like I should try to debug ari-py or look into other abstraction layers.<br><br></div>Thanks again,<br><br>Nick<br><div><div><br>[1] <a href="https://github.com/asterisk/ari-py/issues/3" target="_blank">https://github.com/asterisk/ari-py/issues/3</a><br>


<div><br></div></div></div></div></blockquote><div><br></div><div>Yeah, unfortunately that is still an issue. From the limited amount of debugging I've been able to do on it, I *think* the problem is actually in the swagger-py library [1], but I could be mistaken.<br>
<br>We have a feature freeze in Asterisk coming up in a few weeks, and that's kept most of us from debugging what changed in requests to break the websocket. Hopefully when we get past that date, we can refocus and fix swagger-py/ari-py.<br>
<br>[1] <a href="https://github.com/digium/swagger-py">https://github.com/digium/swagger-py</a><br></div><div><br></div></div><br>-- <br><div dir="ltr"><div>Matthew Jordan<br></div><div>Digium, Inc. | Engineering Manager</div>
<div>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA</div><div>Check us out at: <a href="http://digium.com" target="_blank">http://digium.com</a> & <a href="http://asterisk.org" target="_blank">http://asterisk.org</a></div>
</div>
</div></div>