Konferenz Systeme z.B. (Base Homezone)

Fredjam

Mitglied
Mitglied seit
7 Mai 2006
Beiträge
362
Punkte für Reaktionen
0
Punkte
0
Hallo ich habe ein Vserver mit app_conference with VICIDIAL am laufen
Wollte man wissen wie ich das durchführen kann...

Also ich wollte mehrere Sachen machen.
Einmal will ich das jedes Gespräche aufgenommen wird, das Problem dabei ist das wenn mehrere reinkommen werden auch mehrere Mixmonitors aufgenommen will aber nur das einmal pro Konferenz aufgezeichnet wird. Soll also heißen Mixmonitor nimmt auf wenn der erste reinkommen und hoert auf aufzunehmen wenn der letzte gegangen ist.

Desweiteren möchte ich das wenn einer Reinkommt ich angerufen werde.
Das gleiche spiel soll hier auch passieren wie mit dem Mixmonitor, das ich nicht jedes mal angerufen werde wenn jemand rein kommt...

Kann mir da jemand helfen.

Code:
exten => 686,1,Answer()
exten => 686,n,MixMonitor(/tmp/Conferenz-${TIMESTAMP}.wav|av(0)V(0))
exten => 686,n,Conference(86|MVd)
exten => 686,n,Congestion 
exten => 686,n,Hangup

Gibt es bei der app_conference auch Funktionen wie bei Meetmee ? denn wollte gerne für die erste person Musik einspielen solange die noch alleine ist z.B. oder ganz eine admin oder Moderator recht haben aber da blicke ich das mit den 8 Funktionen nicht wirklich durch....
 
Zuletzt bearbeitet:
hat keiner einen Raht für mich wie kann ich in einen eigen gehenden call noch parallel dazu eine agi Aufruf einbauen. Wobei die agi ja nur einmal mich anrufen sollte wenn also ein zweiter kommt sollte die agi nicht mehr aufgerufen werden...
 
schade hat sonnst keiner eine Idee wie ich es machen kann wenn jemand meine Konferenz betritt und ich dann angerufen werde und mit der Konferenz verbunden werde?
 
Du könntest die Anzahl der Leute in der Konferenz zählen.
Wenn jemand in die Konferenz kommt und die Anzahl = 0 ist, dann kannst Du ein Callfile generieren und Dich anrufen lassen.
 
Kannst du vielleicht mal einen Beispielskript machen währe echt nett :-)
Das gleich würde dann auch mit Der Konferenz aufnahme doch gehen oder ?
Kann das dann einfach so übergeben werden in eine Agi
oder wie würdest du das machen ?
Code:
exten => 686,1,Answer()
exten => 686,n,DeadAGI(Tel.agi,...) ; nur als Beispiel
exten => 686,n,Conference(86|MVd)
exten => 686,n,Congestion 
exten => 686,n,Hangup
 
Das hochzählen kannst Du mit math() und mit der Datenbank machen. http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+Math

Code:
exten => 333,1,DBget(anzahl=anzahl/${CALLERIDNUM})
exten => 333,n,Math(anzahl,${anzahl}+1) 
exten => 333,n,DBput(anzahl/${CALLERIDNUM}=${anzahl})
ist von mir nicht getestet.

Mit GotoIf kannst Du dann noch prüfen ob die Anzahl 1 ist und Dich dann über ein Script ähnlich wie beim Rückrufknopf anrufen lassen.
http://www.ip-phone-forum.de/showpost.php?p=829384&postcount=22
 
Sollte das so gehen ?

Code:
[konferenz]

exten => 1111111,1,DBget(anzahl=anzahl/${CALLERIDNUM})
exten => 1111111,2,Math(anzahl,${anzahl}+1) 
exten => 1111111,3,DBput(anzahl/${CALLERIDNUM}=${anzahl})
exten => 1111111,4,GotoIf($[${anzahl} = 0]?2:3) 
exten => 1111111,5,Goto(reckonf,s,1) 
exten => 1111111,6,Answer()
exten => 1111111,7,Conference(86|MVd)
exten => 1111111,8,Congestion 
exten => 1111111,9,Hangup

[reckonf]
exten => s,1,Answer()
exten => s,n,MixMonitor(/tmp/Conferenz-${TIMESTAMP}.wav|av(0)V(0))
exten => s,n,Conference(86|MVd)
exten => s,n,Congestion 
exten => s,n,Hangup


Nur dann habe ich diesen fehler hier
Code:
-- Executing DBget("SIP/1111111-081b2390", "anzahl=anzahl/Unknown") in new stack
Apr  3 16:49:15 WARNING[1502]: app_db.c:226 get_exec: This application has been deprecated, please use the ${DB(family/key)} function instead.
    -- DBget: varname=anzahl, family=anzahl, key=Unknown
    -- DBget: Value not found in database.
    -- Executing Math("SIP/1111111-081b2390", "anzahl|+1") in new stack
Apr  3 16:49:15 WARNING[1502]: app_math.c:108 math_exec: Math() is deprecated, please use Set(var=${MATH(...)} instead.
Apr  3 16:49:15 WARNING[1502]: app_math.c:184 math_exec: '' is not a valid number
  == Spawn extension (default, 1111111, 2) exited non-zero on 'SIP/1111111-081b2390'
    -- Executing DBget("SIP/1111111-081d4550", "anzahl=anzahl/Unknown") in new stack
    -- DBget: varname=anzahl, family=anzahl, key=Unknown
    -- DBget: Value not found in database.
    -- Executing Math("SIP/1111111-081d4550", "anzahl|+1") in new stack
Apr  3 16:49:21 WARNING[1506]: app_math.c:184 math_exec: '' is not a valid number
  == Spawn extension (default, 1111111, 2) exited non-zero on 'SIP/1111111-081d4550'
    -- Executing DBget("SIP/1111111-081d9a90", "anzahl=anzahl/Unknown") in new stack
    -- DBget: varname=anzahl, family=anzahl, key=Unknown
    -- DBget: Value not found in database.

So habe einen Skript gefunden der diesem hier sehr ähnelt nur weiß ich leider nicht wie ich ihn für meine zwecke umbasteln könnte.
Hier bei geht es um die "Sprachkanäle beschränken"
http://www.ip-phone-forum.de/showthread.php?p=450952

Hier von TinTin
Notfalls kannst Du Dir so einen counter auch selbst bauen, erzeuge unter der Linux Shell einen Key für die Asterisk interne Datenbank:

asterisk -rx "database put ContextX Value 4"

Die extensions.conf kann dann z.B. so aussehen, dass bei jedem laufenden Anruf Value um 1 reduziert wird und nach dem Hangup wieder eins hochgezählt wird. Wenn Value = 0 (4 Kanäle belegt) wird irgendeine andere Aktion ausgeführt (hier "Playback"):

Code:
exten => _X.,1,DBGet(ANZAHL=ContextX/Value) 
exten => _X.,2,GotoIf($[${ANZAHL} > 0]?3:7) 
exten => _X.,3,SetVar(SCHALTER=1) 
exten => _X.,4,SetVar(ANZAHLNEU=$[${ANZAHL} - 1]) 
exten => _X.,5,DBPut(ContextX/Value=${ANZAHLNEU}) 
exten => _X.,6,Dial(SIP/....) 
exten => _X.,7,SetVar(SCHALTER=0) 
exten => _X.,8,Playback(NoLineAvailable) 
exten => _X.,9,Congestion 
exten => _X.,102,Busy 

exten => h,1,GotoIf($[${SCHALTER} = 1]?2:6) 
exten => h,2,DBGet(ANZAHL=ContextX/Value) 
exten => h,3,SetVar(ANZAHLNEU=$[${ANZAHL} + 1])
exten => h,4,DBPut(ContextX/Value=${ANZAHLNEU})
exten => h,5,SetVar(SCHALTER=0) 
exten => h,6,Hangup
 
Zuletzt bearbeitet:
Hier der skript geht vom Zählen her aber das prob ist das der den wer 1 nicht anerkennt in der GotoIf also gibt er immer das hier aus.
-- Executing GotoIf("SIP/1111111-40a0f050", "0?5:10") in new stack
-- Goto (default,3077322,10)
Wo rann kann das liegen ach ja und naja der soll ja weiter aufnehmen so lange noch einer drinne ist und das würde er ja bei diesem skript nicht tuhen da müsste er ja erst aufhören aufzunehmen wenn der wert auf 0 wieder ist....

[konferenz]
exten => 1111111,1,DBget(ANZAHL=ContextX/Value)
exten => 1111111,2,Math(ANZAHL,${ANZAHL}+1)
exten => 1111111,3,DBput(ContextX/Value=${ANZAHL})
exten => 1111111,4,GotoIf($[ANZAHL = 1]?5:10) ;///// <--- Hier kann er das irgend wie nicht richtig verarbeiten
exten => 1111111,4,GotoIf(ANZAHL = 1]?5:10) ;///// <--- SO gehts auch nicht geschweige so
exten => 1111111,4,GotoIf(Value = 1]?5:10)
exten => 1111111,5,Answer()
exten => 1111111,6,MixMonitor(/tmp/Conferenz-${TIMESTAMP}.wav|av(0)V(0))
exten => 1111111,7,Conference(86|MVd)
exten => 1111111,8,Congestion
exten => 1111111,9,Hangup
exten => 1111111,10,Answer()
exten => 1111111,n,Conference(86|MVd)
exten => 1111111,n,Congestion
exten => 1111111,n,Hangup

exten => h,1,DBget(ANZAHL=ContextX/Value)
exten => h,2,Math(ANZAHL,${ANZAHL}-1)
exten => h,3,DBput(ContextX/Value=${ANZAHL})
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
247,931
Beiträge
2,277,031
Mitglieder
377,011
Neuestes Mitglied
KelvinHolt