Callfile für externes Gespräch

Taaz

Neuer User
Mitglied seit
11 Apr 2005
Beiträge
50
Punkte für Reaktionen
0
Punkte
6
Hallo,

ich hoffe, dass ich hier im richtigen Forum für Callfiles bin.
Bekomme es nicht hin dem Callfile zu sagen, dass es raustelefonieren soll.
Versuche es immer mit:
Code:
Channel: CAPI/contr1/030xxxxxxxx
MaxRetries: 2
RetryTime: 5
WaitTime: 5
Context: cb
Extension: CAPI/contr1/030xxxxxxxx
Priority: 1

Mache es so, weil wenn ich normal über die extension.conf raustelefoniere muss ich ja auch Dial(CAPI/contr1/030xxxxxxx) nehmen.
Für SIP funktioniert es {Dial(SIP/3001) || Channel: SIP/3001}

Gibt es dort irgend etwas zu beachten?
Habe leider nur eine Anleitung zu Callfiles gefunden, die auf englisch ist und auch für mich schwer verständlich.

MfG
Taaz
 
kannst du mal die Medung auf der CLI posten?

ich denke du musst noch die CALLERIDNUM setzen, damit * weiss welche MSN zum wählen verwendet werden soll
 
Hallo Taaz,

da gibt's gleich mehrere Dinge zu bemerken:

1. Die Reihenfolge der Einträge im Callfile ist wichtig, muß aussehen wie im Beispiel unten.

2. Die Extension sollte am besten "s" sein.

3. In der extensions.conf muß dann ein context [cb] vorhanden sein ala:

[cb]
exten => s,1,tu was ich will
exten => s,2,....

4. Ob der Channel so stimmt weiß ich nicht, habe kein Capi laufen.

Callfile Beispiel:

Channel: CAPI/contr1/030xxxxxxxx
Callerid: 4940xxxxx
Context: cb
Extension: s
SetVar: CALLERIDNUM=4940xxxxx
MaxRetries: 3
RetryTime: 30
WaitTime: 60
Priority: 1

Gruß,
Tin
 
Hallo,

vielen Dank für die Antworten.
Der Tipp von TinTin hat mein Problem gelöst.
Habe sein Callfile benutzt und es funktioniert.

Vielen Dank an euch beide!

EDIT: Wenn ich aber folgendermaßen das Script ausführe, wird bei dem Anrufer nicht aufgelegt. Was kann ich da tun?
Code:
exten => _3X.,1,Ringing
exten => _3X.,2,AGI(recall-test2.pl|${CALLERIDNUM}|${EXTEN})
exten => _3X.,3,Hangup


Taaz
 
Zuletzt bearbeitet:
Vielleicht trägt folgendes zur Verdeutlichung bei.

Bei einem Callfile gibt es zwei Aktionen
1. Einen Anruf tätigen
2. Etwas ausführen wenn der Anruf entgegengenommen wird.

Normalerweise ist Punkt 2 ebenfalls ein Anruf, kann jedoch z.B auch das Versenden eines Fax sein u.a.m.
Die erste Aktion wird durch die Zeilen
Code:
Channel: <channel>: Channel to use for the outbound call
Callerid: <id> Caller ID
MaxRetries: <number> Number of retries before failing (not including the initial attempt, e.g. 0 = total of 1 attempt to make the call)
RetryTime: <number> Seconds between retries, don't hammer an unavailable phone
WaitTime: <number> Seconds to wait for an answer
Account: Set the account code to use.
beschrieben, die zweite durch die Einträge.
Code:
Context: <context-name> Context in extensions.conf
Extension: <ext> Extension definition in extensions.conf
Priority: <priority> Priority of extension to start with  Set: Set variable to use in extension logic (example: file1=/tmp/to ); in Asterisk 1.0.x use 'SetVar' instead of 'Set'
Application: Asterisk Application to run (use instead of specifiying context, extension and priority)
Data: The options to be passed to application

Wenn du nun möchtest, dass zuerst dein Telefon klingelt und die Verbindung nach extern erst hergestellt wird, wenn du abhebst, muss also unter Channel und Callerid der Channel und die Durchwahl eingetragen werden, mit dem dein Telefon intern erreichbar ist. Unter Context trägst du ein worüber du normalerweise rauswählst u. Extension ist die Nummer die du anwählen möchtest.

Lass dich durch das Channel to use for the outbound call nicht beirren,
das Callfile ist nämlich urspünglich so konzipiert, dass zuerst rausgewählt und erst dann verbunden wird. Dabei gehen jedoch die ersten Sekunden des Gesprächs verloren. Solltest du jedoch genau das wollen, musst du die Logik umdrehen.
 
Zuletzt bearbeitet:
Vielen Dank für diesen Beitrag.
Den werde ich bestimmt später mal für die Verdeutlichung der Callfiles brauchen.
Leider kann ich daraus nicht ableiten, wie ich es ermögliche, dass das Script aufgeführt wird und direkt nach Start des Scriptes die Verbindung zum "Auslöser" beendet wird.


Taaz
 
Poste halt dein AGI einmal und erklär uns vielleicht noch, was genau du denn damit anstellen willst.
 
Du schreibst nach Ausführung der gewünschten Aktion im context [cb] der extenstions.conf:

[cb]
exten => s,1,tu was ich will
exten => s,2,nochwas
exten => s,3,Hangup
 
cb.pl
Code:
#!/usr/bin/perl

open(CALLFILE, ">../../../spool/outgoing/1.call");
print CALLFILE "Channel: CAPI/contr1/030xxxxxx\nCallerid: MSN\nContext: cb\nExtension: s\nSetVar: CALLERIDNUM=MSN\nMaxRetries: 3\nRetryTime: 30\nWaitTime: 60\nPriority: 1\n";

close(CALLFILE);

my $result = 0;

cb-Context in der extensions.conf
Code:
[cb]
exten => s,1,Dial,SIP/3001|55|Ttr

Das Script wird aufgerufen, wenn ein IP-Telefon eine Nummer wählt, die mit 3 anfängt. Sobald das Script aufgerufen wurde, soll die Verbindung zum IP-Telefon unterbrochen werden.

Das Callfile ruft dann eine Nummer an. Sobald der Teilnehmer abgenommen hat, wird eine Verbindung zum IP-Telefon 3001 aufgebaut.


EDIT: @TinTin: Ich möchte ja die Verbindung des "Auslösers" unterbrechen, nicht die Verbindung zu SIP/3001 (s. o. cb-Context)

MfG
Taaz
 
Das sollte normalerweise schon passieren. Da dein Script aber keine return Values verarbeitet, wird es wahrscheinlich nicht richtig beendet. Anstatt mit AGI, solltest du es mit System aufrufen, oder ein richtges AGI script daraus machen. Ausserdem ist es nicht gut, direkt ins spool Verzeichnis zu printen, da * dies ständig überwacht und somit u.U das halbfertige Callfile zu verabeiten versucht. Besser ins tmp und dann nach outgoing verschieben.
 
Taaz schrieb:
EDIT: @TinTin: Ich möchte ja die Verbindung des "Auslösers" unterbrechen, nicht die Verbindung zu SIP/3001 (s. o. cb-Context)

Sorry, falsch verstanden.

Ich habe es bei mir ohne AGI gelöst, ich erstelle zunächst manuell (Texteditor) ein Callfile (Name: callfile) und lege es z.B. im Pfad /etc/asterisk/call/ ab, der Auslöser (mit CallerID yyy) ruft jetzt auf extension xxx an und das callfile wird ins outgoing Verzeichnis kopiert:

exten => xxx/yyy,1,System(cp /etc/asterisk/call/callfile /var/spool/asterisk/outgoing/)

exten => xxx/yyy,2,Hangup

[Edit]
Wenn man ganz auf Nummer sicher gehen will, nimmt man mv statt cp, Einwand von rbaer ist da richtig, Asterisk könnte sonst "halbfertige" Dateien lesen (mir allerdings noch nie passiert)

[Edit2]
Pfadangaben korrigiert ;)
 
Zuletzt bearbeitet:
@TinTin
Code:
\etc\asterisk\call\
Du bist wohl zu lange vor einem Windows Rechner gesessen?
 
rbaer schrieb:
@TinTin
Code:
\etc\asterisk\call\
Du bist wohl zu lange vor einem Windows Rechner gesessen?

Whoops, erwischt ;) Werd es oben verbesseren, danke.
 
@TinTin:
sind xxx und yyy nur Platzhalter? Oder kann ich das genau so machen, ohne eine Nummer einzusetzen?

@rbaer & alle anderen auch ;-):
wir ruft man mit dem system-Befehl ein script auf?
Einfach system("/pfad/zum/script.pl") ???


Außerdem würde ich den zurückgerufenen User per DTMF fragen, mit wem er verbunden werden möchte.
Wie kann ich soetwas realisieren?
- Sollte ich diese Frage lieber in einem neuen Post stellen? -
 
Taaz schrieb:
@TinTin:
sind xxx und yyy nur Platzhalter? Oder kann ich das genau so machen, ohne eine Nummer einzusetzen?

Das sind Platzhalter, da mußt Du schon Nummern eintragen ;)

Außerdem würde ich den zurückgerufenen User per DTMF fragen, mit wem er verbunden werden möchte.
Wie kann ich soetwas realisieren?
- Sollte ich diese Frage lieber in einem neuen Post stellen? -


Dafür gibt's ebenfalls verschiedene Möglichkeiten, sind auch schon hier im Forum dokumentiert:

DISA Methode:
http://www.ip-phone-forum.de/showthread.php?t=61921&page=2

non-DISA Methode mit WaitExten:
http://www.ip-phone-forum.de/showthread.php?t=85820
http://www.ip-phone-forum.de/showpost.php?p=516598&postcount=7
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,868
Beiträge
2,219,771
Mitglieder
371,585
Neuestes Mitglied
PauSchmitz
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.