[Gelöst] extensions.conf Anruf halten

ip-rix

Neuer User
Mitglied seit
13 Mrz 2014
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

wie im Titel beschrieben versuche ich folgendes zu realisieren:

Ein aktiver Anruf soll gehalten werden (Playback Musik oder ähnliches).
Dann soll Asterisk eine Nummer wählen und hier auch über Playback oder Swift eine Ansage tätigen, und anschließend beide Gespräche zusammen schalten.

Ist das irgendwie realisierbar? Ich finde nirgendwo entsprechende Funktionen?
:confused:

Gruß
ip-rix
 
Zuletzt bearbeitet:
Ja, das dürfte kein Problem sein.
Dazu könnten helfen:
System(...) ... um ein Callfile zu schreiben
Dial( ...,m) ... für die Wartemelodie
Playback(...)
 
Zuletzt bearbeitet:
Soll das automatisch ablaufen, oder durch den Nutzer initiiert werden?

Im zweiten Fall ein Transfer an einen local context, dort im Dial mit dem Flag U eine Routine aufrufen, in der die Ansage abgespielt wird.
Was einfacheres fällt mir gerade nicht ein.
 
Also momentan ist es so, dass der Anrufer, falls er die Taste 1 drückt direkt weitergeleitet wird.

Die Logik hatte ich mir so vorgestellt:
1. Anrufer drückt die Taste X // ist bereits implementiert
2. Anrufer landet auf Hold <--- Wie geht das?
3. Asterisk baut eine Verbindung zu Person 2 auf // Das müsste mit einem einfachen Dial doch erledigt sein?
4. Asterisk macht eine kurze Ansage (Swift oder Playback) // Das ist auch nicht schwer
5. Anrufe werden zusammen geschaltet (Nach Ende der Ansage automatisch) <-- Wie geht das??

Mir fehlt momentan für die Punkte 2 und 5 ein Ansatz zur Syntax mit dem ich arbeiten kann. Gibt es nicht so etwas wie hold()?
 
Wo liegt bei Dir der Unterschied zwischen "wird direkt weitergeleitet" und Halten mit anschließendem Verbinden? :gruebel:

Zum Parken gibt es die Funktionen Park() und ParkAndAnnounce().

Um zwei bestehende(!) Channels zusammenzuschalten gibt es zB. Bridge().
 
Der Unterschied liegt nur darin, dass vorher ein Text abgespielt werden soll, den nur Person B hören soll. Danach könnte direkt verbunden werden.

Mit Park lande ich tatsächlich in einer Warteschleife! Vielen Dank!
Allerdings endet an dem Punkt auch meine komplette Extension??
Gibt es keine Möglichkeit den Anruf zu Parken und die extension trotzdem weiter auszuführen?

[Beitrag 2:]

Vielleicht hilft ja dieser Ausschnitt aus dem Asterisk CLI:

Code:
 -- Executing [s@unfug:6] Park("SIP/XXXX-00000000", "XXXX") in new stack
  == Parked SIP/XXXX-00000000 on 701 (lot default). Will timeout back to extension [unfug] s, 1 in 0 seconds
    -- Added extension '701' priority 1 to parkedcalls
    -- <SIP/XXXX-00000000> Playing 'digits/7.gsm' (language 'en')
    -- <SIP/XXXX-00000000> Playing 'digits/0.gsm' (language 'en')
    -- <SIP/XXXX-00000000> Playing 'digits/1.gsm' (language 'en')
    -- Started music on hold, class 'default', on SIP/XXXX-00000000
    -- Stopped music on hold on SIP/XXXX-00000000
    -- Registered extension context 'park-dial'; registrar: features
[Apr 15 13:32:47] NOTICE[20133]: features.c:5081 manage_parked_call: Dial features not found on SIP/XXXX-00000000, using default!
    -- Added extension 'SIP_XXXX' priority 1 to park-dial
  == Timeout for SIP/XXXX-00000000 parked on 701 (default). Returning to park-dial,SIP_XXXX,1
  == Spawn extension (unfug, s, 1) exited non-zero on 'Parked/SIP/XXXX-00000000<ZOMBIE>'
    -- Executing [SIP_XXXX@park-dial:1] Dial("SIP/XXXX-00000000", "SIP/XXXX,30,t") in new stack



Die extension:


Code:
[unfug]
exten => s,1,Answer()
        same => n,Swift("Bitte warten")
        same => n,Set(ALIASNR=1234567)
        same => n,System(/pfad/forward.php ${ALIASNR})
        same => n,Set(WEITERLEITUNG=${FILE(/tmp/${ALIASNR},0,(null))})
        same => n,Park(XXXX)
        same => n,GotoIf($["${WEITERLEITUNG}" = "" ]?nOK:OK)
        same => n(OK),Dial(SIP/YYYY/0${WEITERLEITUNG},120,r)
        same => n,Swift("BlablaBlubb")
        same => n,Bridge(XXXX)
        same => n,Hangup()
        same => n(nOK),Swift("Blöd gelaufen")
        same => n,Hangup()


:bahnhof:
 
Zuletzt bearbeitet von einem Moderator:
Queues sahen mir für eine eigentlich kleine Aufgabe sehr aufwendig aus.
Habe mein Problem erst mal umgehen können: Dial() bietet die Möglichkeit eine *.gsm Datei abzuspielen, wenn man dieses Argument mit angibt .

Beispiel: Dial(SIP....,A(namedergsm))

Diese Nachricht hört auch nur derjenige der angerufen wird.

Danke für die Hilfe!
 
Für vorhandene Audio-Dateien geht das. Eingangs hast Du was von Swift geschrieben, das fällt bei der Variante flach.

Wenn das Thema erledigt ist, könntest Du den Thread-Titel bitte um das Prefix "gelöst" ergänzen, dazu im 1. Beitrag auf Bearbeiten -> Erweitert.
 
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.