[erledigt] app_swift asterisk 1.4.28

Kelldaran

Neuer User
Mitglied seit
18 Apr 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
app_swift ignoriert die optionen und spricht sie einfach mit.Egal welchen delimiter (,|) ich verwende.
Hallo,
ich setze bei einigen AGI Scripten die TTS von Cepstral ein. Ich bin dann auf app_swift gestoßen welches die Sache vereinfachen soll weil man nicht erst mit swift ein Soundfile erstellen und dann mit Streamfile und Konsorten abspielen muss und dadurch die Pause zwischen Soundfile erstellen und abspielen einspart
Unter core show application swift heiß es:
This application streams tts audio from the Cepstral swift engine and
will alternatively read DTMF into the ${SWIFT_DTMF} variable if the timeout
and digits options are used.

Syntax: Swift(text[|timeout in ms][|maximum digits])
Das klappt auch wunderbar wenn man einfach nur einen Text gesprochen haben will.
Also:
exten =>1234,1,Answer()
exten =>1234,n,swift(Irgendwann wirds auch wieder Sommer)
exten =>1234,n,Hangup
Wenn ich das aber so mache
exten =>1234,n,swift(Wann wirds wieder Sommer?|2000|2)
Dann liest er das timeout und die maximum digits einfach mit vor.
Ich habe natürlich statt der Pipe (|) auch das Komma probiert.leider ohne Erfolg.
Hat jemand eine Idee?
Gruß Daniel

Ich bin jetzt schon ein bißchen weitergekommen:
In der extensions.conf kann ich immer noch keine Optionen übergeben aber in AGI-Scripten funktioniert es. Ich benutze python und als Bibliothek habe ich pyst eingebunden.
Da gibt es eine Methode appexec('application','options') die hervorragend funktioniert.
Das sieht dann so aus:
appexec('Swift','Irgendwann wird es wieder Sommer')
Ist wirklich Klasse weil der Text fast ohne Pause erstellt und wiedergegeben wird. Man kann dem zu sprechenden String auch Formatierungstags mitgeben was in der extensions.conf nicht geht. Das sieht dann so aus.
appexec('Swift',"glaubt irgendjemand <break time='200ms' /> dass es jemals wieder Sommer wird)
Mann darf in dem String allerdings kein Komma und keine Pipe nutzen da hiermit dann das Timeout und die Maxdigits angegeben werden.
man kann dann mit get_variable('SWIFT_DTMF') die zurückgegebenen DTMF Töne abfragen:
appexec('Swift',"glaubt irgendjemand <break time='200ms' /> dass es jemals wieder Sommer wird,2000,2)
x=get_variable('SWIFT_DTMF')
Leider kann ich app_swift trotzdem nicht einsetzten da es häufig zu einem Speicherzugriffsfehler kommt wenn während der Ansage aufgelegt wird und sich dann auch der Asterisk beendet.:(
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.