Ansage vor melden

workaholic

Neuer User
Mitglied seit
3 Apr 2009
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!

Eigentlich eine ganz einfache Sache, aber auch nach stundenlanger Suche (hier im Forum und auch im Asterisk-Buch) sowie unzähligen fehlgeschlagenen Tests bin ich verzweifelt.

Ich möchte folgendes Szenario realisieren:

1. Kunde ruft an
2. Asterisk nimmt den Anruf entgegen, spielt Hintergrund-Musik und sagt dem Anrufer wieviele Leute vor ihm in der Queue sind
3. Während der Anrufer nette Musik und eventuell die Ansage hört klingelt das Telefon eines Teilnehmers
4. Wenn nach 30 Sekunden niemand rangeht soll der Anrufer die Möglichkeit haben, eine Ansage auf dem AB zu hinterlassen (ist aber erstmal weniger wichtig)

Asterisk Version 1.4 läuft bei mir soweit, Telefone klingeln auch, alles perfekt. Aber bezüglich der Musik vor dem Melden des Teilnehmers bin ich ratlos.
Ich habe versucht, IVR einzurichten (nach dieser Anleitung: http://www.das-asterisk-buch.de/1.0/onechunk/warteschleifen.html), aber der Anrufer hört nur das normale Klingeln.

Kann mir jemand sagen, was ich vielleicht falsch mache oder wo ich ein Tutorial finde welches das oben beschriebene Szenario (oder etwas ähnliches) erklärt?

Beste Grüße

Workaholic
 
Hallo,

schau dir mal die "agents.conf" und "queues.conf" an.
Dann in der extensions.conf

exten => s,1,Queue(queuename,,,,45) ; 45 sec in der Queue dann VoiceMail
exten => s,n,VoiceMail(VM-Nummer) ; Voicemailnummer z.B. 100
exten => s,n,Hangup()

exten => 99,1,AgentCallbackLogin(${CALLERIDNUM}) ; hiermit loggen sich die Agenten ein/aus
exten => 99,n,Hangup()

Ein schönes Wochenende.
Jürgen
 
Hallo Jürgen!

Danke für die Antwort!

Habe ich nach bestem Wissen und Gewissen gemacht. Leider das gleiche Problem: Das Telefon klingelt, Anrufer bekommt ein Freizeichen und die Anlage geht nicht ran (es sei denn, der Anruf wird am Telefon angenommen).

Ich poste mal meine Config:

extensions.conf
Code:
[sonstige]

[meine-telefone]
; exten => 2000,1,Answer()
; exten => 2000,2,Background(vm-tempgreeting)

exten => 2000,3,Dial(SIP/2000,20)
exten => 2000,4,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => s,1,Queue(support,,,,45) ; 45 sec in der Queue dann VoiceMail
exten => s,n,VoiceMail(2000) ; Voicemailnummer z.B. 100
exten => s,n,Hangup()

exten => 99,1,AgentCallbackLogin(${CALLERIDNUM}) ; hiermit loggen sich die Agenten ein/aus
exten => 99,n,Hangup()

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[from-sipgate]                                                                                                       
exten => SIP-NUMMER-HIER,1,Dial(SIP/2000)

agents.conf
Code:
persistentagents=yes
agent => 2000,1234,Teilnehmer1
agent => 2001,1234,Telnehmer2

queues.conf
Code:
[general]
persistentmembers = yes
[support]
musiconhold = default
strategy = ringall
servicelevel = 60
timeout = 25
retry = 30
weight = 0 ;Je höher, desto wichtiger und eher wird ein Anruf durchgestellt
announce-frequency = 30
announce-holdtime = yes
periodic-announce-frequency = 20
monitor-format = gsm
joinempty = yes  ; wir wollen unsere Anrufer nicht unnötig warten lassen, also können anrufer nicht in nicht belegte queues einsortoert werden
; leavewhenempty = strict  ; Anrufer nicht unnötig warten lassen
eventwhencalled = yes
eventmemberstatus = no
reportholdtime = yes 
memberdelay = 1
timeoutrestart = yes
autopause = no
ringinuse = yes

member => Agent/2000
member => Agent/2001

Kann mir irgend jemand sagen, wo hier der Fehler liegt? Ich bin mit meinem Latein nach numehr zwei Tagen ununterbrochenem Testen am Ende :confused:

Beste Grüße

Workaholic
 
Hallo,
die "agents.conf" und "queues.conf" sehen so gut aus. Allerdings mit der extensions.conf stimmt etwas nicht.
Mit welcher Rufnummer kommst Du rein?? Wenn die Rufnummer z.B. 8888 ist, muß der Eintrag so lauten :
exten => 8888,1,Queue(support,,,,45) ; 45 sec in der Queue dann VoiceMail
exten => 8888,n,VoiceMail(2000) ; Voicemailnummer z.B. 2000
exten => 8888,n,Hangup()

Du mußt dich vorher mit 99 als Agent (2000 und 2001) anmelden, sonst ist kein Agent in der Queue und kein Apparat klingelt.

Hier noch ein Fehler:
exten => 2000,3,Dial(SIP/2000,20)
exten => 2000,4,VoiceMail(2000)

sollte sein :
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

In der queues.conf fehlt bei [support] noch context=meine-telefone.

viel Erfolg
Jürgen
 
Hallo!

Vielen Dank für die Antwort!
Nachdem ich gestern Nacht noch einige Stunden damit verbracht habe das soweit hinzubekommen bin ich heute morgen um 6 Uhr verzweifelt ins Bett gegangen.

Ich habe die Config nun einmal nach Deinen Vorgaben angepasst, aber ich kann mich nun leider noch nicht einmal mehr als Agent einloggen (das hatte vorher funktioniert). Fehlermeldung lautet:

Code:
WARNING[14113]: pbx.c:1833 pbx_extension_helper: No application 'AgentCallbackLogin' for extension (meine-telefone, 1001, 1)
  == Spawn extension (meine-telefone, 1001, 1) exited non-zero on 'SIP/2000-094fd6b8'

Dafür kann ich, wenn ich die 2002 anrufe, die Wartemusik hören. Ruft jedoch jemand von extern an, so bekommt er ein Besetztzeichen und es erscheint die folgende Fehlermeldung:

Code:
WARNING[26503]: app_dial.c:1237 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
  == Everyone is busy/congested at this time (1:0/0/1)
  == Auto fallthrough, channel 'SIP/2124305e0-09504158' status is 'CHANUNAVAIL'


Dabei sieht meine exntensions.conf folgendermaßen aus:

Code:
[sonstige]

[meine-telefone]
; exten => 2000,1,Answer()
; exten => 2000,2,Background(vm-tempgreeting)

exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => 2002,1,Queue(support,,,,45) ; 45 sec in der Queue dann VoiceMail
exten => 2002,n,VoiceMail(2000) ; Voicemailnummer z.B. 100
exten => 2002,n,Hangup()

exten => 1001,1,AgentCallbackLogin(${CALLERIDNUM}) ; hiermit loggen sich die Agenten ein/aus
exten => 1001,n,Hangup()

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[from-sipgate]
exten => 2124305e0,1,Dial(SIP/2002)

Die agents.conf und die queues.conf habe ich unverändert gelassen.

Was ich mit obiger extensions.conf bezwecken möchte:

Unter [from-sipgate] definiere ich die eingehende Leitung mit der Sipgate-Rufnummer und bestimme, dass dieser Ruf auf der Durchwahl 2002 eingehen soll (das ist meine Warteschleife).

Durchwahl 2000 ist ein Sip-Telefon, genauso wie 2001. Beide sind agents und in der agents.conf sowie in der queues.conf eingetragen.

2002 ist meine Queue, auf der eingende Anrufe von Sipgate auflaufen sollen.

2999 ist der AB und über die 1001 sollen sich die Agents nun einloggen. Dort bekomme ich aber eben oben genannte Fehlermeldung.
Aus meiner Sicht sollte doch so alles funktionieren?

Hast Du da zufällig noch einen Rat für mich?

Beste Grüße

Workaholic
 
Hallo,
>> [from-sipgate]
>> exten => 2124305e0,1,Dial(SIP/2002)
Hier kann dir 2002 nicht gerufen werden, denn diese ist im Kontext [meien-telefone]. Du könntest dies mit folgendem Befehl lösen :
exten 2124305e0,1,Goto(meine-telefone,2002,1)

Mit "exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)" rufst Du immer die VoiceMail des anrufenden Teilnehmers ab. Wenn 2000 abfragt, dann die VM der 2000, wenn 2001 anruft, dann die VM der 2001. Das wird durch das Variable "${CALLERID(num)" erreicht. Bei Deiner Konfig wird, wenn die Queue sich nicht meldet die VM 2000 angesprochen. Wenn Du auch von der 2001 die VM 2000 abfragen willst, dann muss die Zeile so lauten :
"exten => 2999,1,VoiceMailMain()"
Du wirst dann nach der VM Nummer gefragt.

Hast Du zufällig asterisk 1.6 , ich glaube da gibt es "AgentCallbackLogin" nicht mehr. Dias kannst Du im CLI (asterisk -vvvvvvr) mit folgendem Befehl testen "show application agentcallbacklogin". Wenn er disen Application nich findet müssen wir das an/abmelden anders lösen :
exten => 1001,1,AddQueueMember(support,SIP/${CALLERID(num)})
exten => 1001,n,Hangup()
exten => 1002,1,RemoveQueueMember(support,SIP/${CALLERID(num)})
exten => 1002,n,Hangup()
Ich habe diese Einstellung selbst noch nicht probiert, sollte aber funktionieren.

Gib mir Bescheid ob es funktioniert.
Jürgen
 
Hallo Jürgen!

Da bleibt nur ein: :groesste:

Es funktioniert, bis auf ein paar Kleinigkeiten. Aber zunächst einmal die vollständige Config zu Nachbauen (falls jemand vor dem gleichen Problem stehen sollte irgendwann - oder ich mal wieder meine Config verliere):

queues.conf
Code:
[general]
persistentmembers = yes
[support]
context = meine-telefone
musiconhold = default
strategy = ringall 
servicelevel = 60               ; Legt die Zeit (in Sekunden) fest, in der Anrufe beantwortet sein sollen. Nur für statistische Auswertungen
timeout = 10                    ; Legt fest, wie lange (in Sekunden) ein Telefon klingeln soll, bis wir es als nicht besetzt (also Timeout) betrachten.
retry = 5                       ; Bestimmt, wie lange (in Sekunden) gewartet werden soll, bevor erneut alle Agenten angeklingelt werden.
weight = 10                     ; Je höher, desto wichtiger und eher wird ein Anruf durchgestellt
announce-frequency = 5
announce-holdtime = yes
; periodic-announce-frequency = 20
monitor-format = gsm
joinempty = yes                 ; wir wollen unsere Anrufer nicht unnötig warten lassen, also können anrufer nicht in nicht belegte queues einsortoert werden
; leavewhenempty = strict       ; Anrufer nicht unnötig warten lassen
; eventwhencalled = yes
eventmemberstatus = no
reportholdtime = yes
memberdelay = 1
timeoutrestart = yes
autopause = no
ringinuse = yes

member => Agent/2000
member => Agent/2001


agents.conf
Code:
persistentagents=yes
agent => 2000,1234,Teilnehmer1
agent => 2001,4321,Telnehmer2


extensions.conf
Code:
[meine-telefone]
; exten => 2000,1,Answer()
; exten => 2000,2,Background(vm-tempgreeting)

exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => 2002,1,Queue(support,,,,70) ; 70 sec in der Queue dann VoiceMail
exten => 2002,n,VoiceMail(2000) ; Voicemailnummer z.B. 100
exten => 2002,n,Hangup()

; exten => 1001,1,AgentCallbackLogin(${CALLERIDNUM}) ; hiermit loggen sich die Agenten ein/aus
; exten => 1001,n,Hangup()
exten => 1001,1,AddQueueMember(support,SIP/${CALLERID(num)})
exten => 1001,n,Hangup()
exten => 1002,1,RemoveQueueMember(support,SIP/${CALLERID(num)})
exten => 1002,n,Hangup()


exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[from-sipgate]
exten => 2124305e0,1,Goto(meine-telefone,2002,1)

Nun stellen sich nur noch folgende Probleme:

1. Die Anrufer hören Wartemusik, und zwischendurch eine Ansage an welcher Stelle in der Queue sie sich befinden. Allerdings klingelt, entgegen meiner Erwartung, nur das Telefon 2000. 2001 wird komplett ignoriert.

2. Ausgehende Anrufe sind problemlos möglich, solange ich die komplette Vorwahl wähle und der angerufene Anschluss in Deutschland ist. Sobald ich versuche, eine internationale Vorwahl zu wählen (bspw. 00353) wird die folgende Meldung ausgegeben und der Anruf kann nicht durchgeführt werden:

NOTICE[7613]: chan_sip.c:14627 handle_request_invite: Call from '2000' to extension '0035351397614' rejected because extension not found.

Kannst Du mir hierzu vielleicht noch einen letzten Rat geben? Auf jeden Fall bin ich begeistert und gehöre ab sofort zu den Asterisk-Usern ;)

Beste Grüße

Workaholic
 
Willkommen im Kreis der "Asterisk-Freunde". Es freut mich das Du "bekehrt" wurdest.

Nun zu Den letzten kleinen Problemchen:
1. Schau Dir diese Zeile in deiner extensions.conf an :

>> exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

Du wählst eine 0 (_0), danach können Ziffern von 1-9 ([1-9]) folgen, diese belibig oft (.).
Wie willst Du also eine 00... wählen. Die Zeile müsste korrekt so lauten :

exten => _0[0-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

Jetzt kommt's, wie willst nun Ortsnetznummern wählen??
Ich würde das ganze so lösen :

;-- Für Fern-/Auslandsgespräche
exten => _0X.,1,Dial(SIP/${EXTEN}@ext-sip-account)
exten => _0X.,n,Hangup()
;-- ein Hangup nicht unbed. nötig, aber immer gut nach dem Gespräch aufzulegen.

;-- Für Ortsgespräch, falls Dein Provider die Vorwahl auch benötigt die 0711(Bsp. Stuttgart)
exten => _[1-9]X.,1,Dial(SIP/0711${EXTEN}@ext-sip-account)
exten => _0X.,n,Hangup()

Zu Pkt 1)
im cli kannst Du dir mit "queue show support" die Queue Suppor anschauen. Dort müssten die beiden NST 2000 und 2001 angezeigt und angemeldet sein.
Du kannst ausedem mit dieser Konfiguration die "members =>" aus der "queues.conf" und die "agents =>" aus der "agents.conf" entfernen. Das An-/Abmelden geschieht dynamisch.
Bei Änderungen an den .conf Dateien ein "reload" nicht vergessen. Wenn dann beide NST erscheinen sollte dies auch fuktionieren.
In der "queues.conf" gibt es den Parameter "strategy = ringall ", damit wird eingestellt ob all, oder reihum geklingelt wir. Auserdem kann dort auch die Positionsansage abgeschaltet werden.

Gruß
Jürgen
 
Und nochmal ein freundliches Hallo!

Ein Teilerfolg: Ich kann nun auch ins Ausland telefonieren :)

Allerdings stecke ich noch immer in der derzeit wichtigeren Problematik, dass nur die 2000 klingelt.

Wird dann von der 2000 ein Anruf entgegen genommen, so passiert folgendes:

Code:
Executing [2124305e0@from-sipgate:1] Goto("SIP/2124305e0-b7104d80", "meine-telefone|2002|1") in new stack
    -- Goto (meine-telefone,2002,1)
    -- Executing [2002@meine-telefone:1] Queue("SIP/2124305e0-b7104d80", "support||||70") in new stack
    -- Started music on hold, class 'default', on SIP/2124305e0-b7104d80
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 is ringing
    -- Nobody picked up in 10000 ms
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 is ringing
    -- SIP/2000-08831820 answered SIP/2124305e0-b7104d80
[Aug  8 19:55:13] NOTICE[9763]: app_queue.c:2963 try_calling: Delaying member connect for 1 seconds
    -- <SIP/2000-08831820> Playing 'queue-reporthold' (language 'en')
    -- <SIP/2000-08831820> Playing 'queue-less-than' (language 'en')
    -- <SIP/2000-08831820> Playing 'digits/2' (language 'en')
    -- <SIP/2000-08831820> Playing 'queue-minutes' (language 'en')
    -- Stopped music on hold on SIP/2124305e0-b7104d80
[Aug  8 19:55:18] WARNING[9763]: app_queue.c:3162 try_calling: The device state of this queue member, SIP/2000, is still 'Not in Use' when it probably should not be! Please check UPGRADE.txt for correct configuration settings.
    -- Native bridging SIP/2124305e0-b7104d80 and SIP/2000-08831820
  == Spawn extension (meine-telefone, 2002, 1) exited non-zero on 'SIP/2124305e0-b7104d80'

Ein queue show support gbt folgendes aus:

Code:
support      has 0 calls (max unlimited) in 'ringall' strategy (4s holdtime), W:10, C:1, A:0, SL:100.0% within 60s
   Members: 
      SIP/2000 (dynamic) (Not in use) has taken 3 calls (last was 163 secs ago)
      Agent/2000 (Invalid) has taken no calls yet
      Agent/2001 (Invalid) has taken no calls yet
   No Callers

Ich habe schon versucht, in der sip.conf dies zu beachten:

Queues depend on the channel driver reporting the proper state
for each member of the queue. To get proper signalling on
queue members that use the SIP channel driver, you need to
enable a call limit (could be set to a high value so it
is not put into action) and also make sure that both inbound
and outbound calls are accounted for.

Example:

[general]
limitonpeer = yes

[peername]
type=friend
call-limit=10


Gebracht hat es allerdings nichts. Ich kann jedoch problemlos von der 2000 auf der 2001 anrufen, nur warum in aller Welt will die nicht klingeln wenn jemand in der Queue landet?

Ich beiße mir heute wirklich die Zähne dran aus :(

Beste Grüße

Workaholic
 
Hallo,
die 2001 ist nicht als Agent angemeldet. Es müßte für 2001 die gleice Zeile wie für 2000 stehen :
Members:
SIP/2000 (dynamic) (Not in use) has taken 3 calls (last was 163 secs ago)

Versuche doch nochmal von der 2001 die 1001 anzurufen, um dich in der Queue anzumelden.
Dann nochmal prüfen ob die Zeile drinsteht.
 
Hallo Jürgen!

Herzlichen Dank für die Hilfe, es klappt nun wirklich alles.
Ich war offenbar nur zu dämlich, und hatte vergessen mich mit der 2001 auch als Agent anzumelden... :blonk:

Nun steht also die Anlage in der Grundversion. Ich werde mich jetzt mal dran machen, weitere Nebenstellen einzurichten und ein Auswahlmenü. Das hat aber eine weniger hohe Prio, wichtig war zunächst einmal, dass die Anlage überhaupt funktioniert.

Beste Grüße

Workaholic
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,300
Beiträge
2,249,713
Mitglieder
373,904
Neuestes Mitglied
Elemir
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.