Stasis: der Dialplan-Einsprungpunkt
Eine ARI-Anwendung übernimmt die Kontrolle über einen Channel, sobald
der Dialplan die Applikation Stasis(appname) aufruft. Ab diesem
Moment passiert im Dialplan nichts mehr — es sei denn, die Anwendung
schickt den Channel per ContinueInDialplan-API-Call zurück.
Beispiel: Der Anrufer wählt 3000, und alles weitere entscheidet die
ARI-Anwendung meine-app:
[default]
exten => 3000,1,NoOp(Uebergabe an ARI)
same => n,Answer()
same => n,Stasis(meine-app)
same => n,Hangup()
Der Event-Fluss
Läuft ARI in der Anwendung, verbindet sie sich per WebSocket mit Asterisk:
ws://127.0.0.1:8088/ari/events?api_key=meine-app:IHR-PASSWORT&app=meine-app
Sobald ein Channel per Stasis(meine-app) eintritt, schickt Asterisk
ein StasisStart-Event über die WebSocket-Verbindung. Die Anwendung
antwortet — zum Beispiel mit HTTP-Requests gegen
/channels/{channelId}/play (Audio abspielen),
/channels/{channelId}/answer (abnehmen), /bridges (Bridge anlegen)
oder /channels/{channelId} DELETE (Gespräch beenden).
Der wichtige Unterschied zu AGI: ARI ist asynchron. Die Anwendung schickt Kommandos und reagiert auf Events — sie ist nicht an den Channel "gebunden" und kann viele Channels parallel bedienen.
Was Stasis nicht tut
Während ein Channel in einer Stasis-Anwendung ist, laufen Dialplan-Timer
(TIMEOUT(absolute)) nicht wie im normalen Dialplan — die App muss
Zeitüberschreitungen selbst verwalten. Auch die h-Extension wird nicht
aus der App heraus aufgerufen; für Cleanup-Arbeit reagieren Sie auf
das StasisEnd-Event.