[Diskussion] [HOWTO] Asterisk mit dem Snom-Pickup-Patch patchen

(Suchen nach "dialog-info xmlns", so um Zeile 7375 bis 7450), dann war das Patchen sicher erfolgreich

Patchen hat geklappt, die Änderungen sind drin.

Der "|*8-Pickup" funktioniert (auch) mit ungepatchedem Asterisk...

Pickup funktioniert ja auch.

Wenn da nur
Code:
<?xml version ...
<dialog-info xmlns=
...
<dialog id=...
drin steht, ist der Asterisk wahrscheinlich ungepatcht oder diese Bedingung nicht erfüllt:
Code:
if ((state & AST_EXTENSION_RINGING) && global_notifyringing)

Das scheint so zu sein; im dialog-info steht nix von recipient. Notifyringing ist auch gesetzt; steht in sip show settings drin. Ich hab da auchmal eine Ausgabe von sendcallinfo reingebaut; kann nur grad nicht neu starten.


Da steht nix von Telefonkonfiguration... (oder überseh ich da was?)

Grüße

Matthias
 
Da steht nix von Telefonkonfiguration... (oder überseh ich da was?)
Stimmt, nicht so viel, aber es schadet doch nichts, immer mal wieder auf diese Wiki-Seite hinzuweisen ;-)
Im Ernst: "BLF" hast Du, nehme ich an?
Und das callpickup_dialoginfo wäre evtl. auch noch wichtig, steht aber auf einer anderen Seite und ist glaubs nicht mal matchentscheidend (bin mir da aber gerade nicht sicher).
 
Stand der Dinge bei Asterisk 1.6

Ich wollte gerade mal den Stand der Dinge bei Asterisk 1.6 erklären:

Wie pwakler schon in #275 erwähnt hat, ist seit asterisk-1.6.2.0-beta1 (derzeit bei mir aktuell asterisk-1.6.2.0-beta2) ein Pickup Patch drin.
In der Tat wird bei diesem Patch ast_channel_search_locked() ohne while-Schleife verwendet.

Das ganze funktioniert jetzt mit folgenden Optionen:
sip.conf:
- allowsubscribe=yes
- notifyringing=yes
- notifyhold=yes
- notifycid = ignore-context
extensions.conf:
----
[doPickup] ; wird included wo nötig
exten => _*8XX,1,SET(GLOBAL(PICKUPMARK)=${EXTEN:2})
exten => _*8XX,n,Pickup(${EXTEN:2}@PICKUPMARK)

- im Snom: Typ BLF, <10@domain|*8>

Zu notifycid schreibt die Doku:
; Control whether caller ID information is sent along with
; dialog-info+xml notifications (supported by snom phones).
; Note that this feature will only work properly when the
; incoming call is using the same extension and context that
; is being used as the hint for the called extension. This means
; that it won't work when using subscribecontext for your sip
; user or peer (if subscribecontext is different than context).
; This is also limited to a single caller, meaning that if an
; extension is ringing because multiple calls are incoming,
; only one will be used as the source of caller ID. Specify
; 'ignore-context' to ignore the called context when looking
; for the caller's channel. The default value is 'no.' Setting
; notifycid to 'ignore-context' also causes call-pickups attempted
; via SNOM's NOTIFY mechanism to set the context for the call pickup
; to PICKUPMARK.


Das Resultat:
1) das Pickup wird an die Subskripbierten Snoms signalisiert.
2) Als Callerid wird im Display angezeigt:

- "Callerid -> #klingelnde Extension" : falls die Extension die anruft aus dem Context stammt, in dem die Hints sind. Vg. Doku von notifycid
- "#klingelnde Extension -> #klingelnde Extension" : sonst

letzters ist ziemlich sinnlos. Aber w. des fehlenden Whiles wohl nicht zu vermeiden.

3) Das Heranholen mit der BLF-Taste geht einwandfrei.


Nun, das ganze ist nicht nicht perfekt. Der Lookup der Callerid bei Anrufen von extern (in meinem Falle) wäre schon schön. Ich bin mir nicht sicher, ob ich das ganze durch Umstricken des Dialplans lt. Doku erreichen kann - ich verstehe die (schlechte) Beschreibung von notifycid nämlich noch nicht ganz.

Sicher ist aber: unter Asterisk 1.4 habe ich Pickup nie hinbekommen. Das Pickup_info (Callerid) ging in verschiednenen Versionen (habe nur bis 1.4.21 die 1.4er verwendet), aber das Pickup ging noch nie.
Da Asterisk 1.6 jetzt auch G722 vernünftig untersützt, kann ich nur ratem hinsichtlich Pickup möglichst die 1.6.2er zu verwenden.

Gruß
VS
 
Im Ernst: "BLF" hast Du, nehme ich an?

Na klar.
Wie gesagt, Pickup funktioniert ja. Nur die Nummer wird nicht ersetzt. Es scheint inder tat so zu sein, dass

Code:
if ((state & AST_EXTENSION_RINGING) && global_notifyringing)

nicht erfüllt ist.Keine Ahnung warum; kann das was mit dem Kontext der Anrufe zu tun haben? Dass sich beide Apparate nicht im selben Kontext befinden?
Ist mir nicht ganz klar.

Grüße

Matthias
 
@elzoido
Das mit 1.6.2 hört sich toll an. Wenn die mal Stable is werde ich es direkt so testen.
Bis dahin bleibe ich allerdings noch bei 1.4

Danke für die kurze Zusammenfassung an dich.

Gruss,

Jörg
 
Na klar.
Wie gesagt, Pickup funktioniert ja.
Jein. Wenn ich mich richtig erinnere, dann funktioniert bei Dir Pickup nur, wenn Du "|*8" verwendest. Und dem "Pickup funktioniert" zu sagen...
Nur die Nummer wird nicht ersetzt.
Das wird sie nie, wenn Du "|*8" verwendest.
Update: Das stimmt offensichtlich nicht, siehe z.B. http://www.ip-phone-forum.de/showpost.php?p=1332068&postcount=308 oder http://wiki.snom.com/Features/Call_Pick-Up
kann das was mit dem Kontext der Anrufe zu tun haben? Dass sich beide Apparate nicht im selben Kontext befinden?
Das würde ich zumindest nicht von vornherein gänzlich ausschliessen ;-) ... Aber da hatte ich v.a. auch Probleme mit der "|*8"-Variante...

Update: Verwechsle ich da gerade etwas von wegen "|*8"... (siehe Post zu 1.6 von elzoido) Bin gerade etwas :confused: - muss mich wohl zuerst mal ransetzen und das ganze sauber bei mir selber anschauen, bevor ich hier weiter die Klappe aufreisse und versuche zu helfen... Also: Ich halte erstmal die Klappe... :p
 
Zuletzt bearbeitet:
@elzoido
Das mit 1.6.2 hört sich toll an. Wenn die mal Stable is werde ich es direkt so testen.

Würde ich auch. Mein Problem ist eine 4fach-BRI und ein S2M (alle mit HFC-Chipsatz). Die Beschreibungen, die ans Laufen zu bekommen unter 1.6.x, sind etwas dürftig. Bislang nutze ich mISDN; das klappt ja unter 1.6.x nur über den Umweg LCR, oder? Was man so liest, ist aber der für sich schon nicht so toll stabil...

Grüße

Matthias
 
Soo... also ich habe gestern Nacht ein wenig mit Asterisk "gespielt".
Herausgekommen ist ein Patch für den aktuellen asterisk-svn-trunk (revision 196452).

Das Ergebnis: Pickup funktioniert endlich und auch die CallerID des Anrufers wird am Display angezeigt! So sollte es doch sein... :bier: ;)

Ich würde mich natürlich sehr darüber freuen, wenn man meinen Patch testen würde!

Zur korrekten Funktionsweise: "Voraussetzung" dafür ist das Vorhandensein der Pickup()-Application in dialplan. Die Pickup-Prefix ist derzeit auf *8 (ist eh "Standard") hardgecoded.
Mein Dialplan sieht (vereinfacht) so aus:
Code:
exten =>    1,hint,SIP/10&SIP/11
exten =>   10,hint,SIP/10
exten =>   11,hint,SIP/11

exten =>    1,1,Dial(SIP/10&SIP/11,,mtwk)
exten =>  _1.,1,Dial(SIP/${EXTEN},,rtwk)

exten => _*8.,1,Pickup(${EXTEN:2}@context)
D.h. bevor ihr den Pickup-Patch probiert, stellt bitte sicher, dass der "normale" Pickup z.B. mittels *81 (wie in meinem Beispiel) funktioniert!

Die Konfiguration der Snoms sieht wie folgt aus:
Code:
<fkey idx="0" context="active" perm="R">dest <sip:1@asterisk></fkey> 
<fkey idx="1" context="active" perm="R">dest <sip:10@asterisk></fkey>
D.h. bei den function keys als Type "Extension" wählen und als Number einfach die zu "überwachende" Nummer...

So, ich denke, das waren die wichtigsten Informationen für's Erste...
Sollte es dennoch Fragen geben, dann fragt ruhig!
Ich bin echt schon gespannt ob's bei euch auch funktioniert... ;)
 

Anhänge

  • snom-pickup-patch.diff.gz
    1.4 KB · Aufrufe: 67
Zuletzt bearbeitet:
[Edit foschi: Posting verschoben]

Hallo pairosilva,
ich würde dir empfehlen, einen neuen Thread mit deiner Frage aufzumachen, da sie hier im Thread total fehl am Platz ist (hier geht es wirklich um eine Snom-Spezialität; die bringt dich wirklich nicht weiter).
Die Linksys-Telefone sind (meiner Erfahrung nach) eher Exoten, daher wirst du wohl wenig finden. Aber, wie gesagt: in einem Snom -Thread mit Sicherheit nicht, da die, die sich mit Linksys-Geräten auskennen, hier sicherlich nicht mitlesen.

Grüße

Matthias
 
Problem mit Call-Weiterleitung nach Pickup

Hallo allerseits,
seit einiger Zeit habe ich Asterisk 1.4.21.1 mit Patch asterisk-1.4.21-pickup-by-call-id.patch.txt erfolgreich im Einsatz. Nach dem Upgrade der Firmware-Version des Snom360 auf 7.3.23 habe ich folgendes Problem: Wenn TelefonA per Pickup ein eingehendes Gespraech von TelefonB uebernimmt und anschliessend dieses Gespraech mit Ruecksprache an TelefonC weiterzuvermitteln versucht, bleibt TelefonC in der Warteschleife haengen. Das Gespraech wird nicht weitervermittelt, sondern bleibt bei TelefonA im Hold. Dieses Phaenomen tritt nicht auf bei Snom-Firmware 7.1.39, auf die ich zurueckgegangen bin.

Liegt dies eventuell an meinen speziellen Snom-Einstellungen oder tritt das Problem auch andernorts auf?

Mit bestem Dank fuer eventuelle Hinweise
Capello

Nachtrag 15.10.2009:
Entsprechende Tests mit der Snom-Version 7.3.27 haben ergeben, dass das geschilderte Problem nicht beseitigt ist.

Nachtrag 19.01.2010:
Nachdem das Problem auch bei ungepatchtem Asterisk 1.6.2.0 weiterhin auftrat, habe ich mich an den Snom-Support gewendet. Dort bekam ich den Hinweis, dass mit der Snom-Version 7.3.x eine neue Option eingeführt wurde, welche aktiviert werden muss:

-> Einrichtung -> Erweitert -> Verhalten -> Tasten -> Transferiere starcode übernommene Anrufe: AN

Mit dieser Option funktioniert der oben beschriebene Call-Transfer auch solcher Calls, die mittels *8 übernommen wurden.
 
Zuletzt bearbeitet:
Soo... also ich habe gestern Nacht ein wenig mit Asterisk "gespielt".
Herausgekommen ist ein Patch für den aktuellen asterisk-svn-trunk (revision 196452).
Funktionieren tut das wahrscheinlich schon. aber ich bin der Meinung, dass dieser Patch mit Vorsicht genossen werden sollte, denn der macht einige der Funktionen, die mit dem Pickup im 1.6er-Asterisk implementiert wurden, quasi wieder rückgängig gemacht werden ("do_magic_pickup", ob dies - bzw. die ganze Pickup-Sache im 1.6er - eine gute Variante ist oder nicht, möchte ich dahinstellen...)
Und "*8" hart rein zu coden scheint mir ein Gebastel zu sein (sorry!)
 
elzoido, Danke für die Infos! Schaue mir gerade mal wieder die verschiedenen Pickup-Implementierungen an (im Code, nciht in der Realität...)
- im Snom: Typ BLF, <10@domain|*8>
Braucht es das wirklich? Nach meinem Verständnis des Codes nicht, da mit Replaces-Headern gearbeitet wird.

2) Als Callerid wird im Display angezeigt:
- "Callerid -> #klingelnde Extension" : falls die Extension die anruft aus dem Context stammt, in dem die Hints sind. Vg. Doku von notifycid
- "#klingelnde Extension -> #klingelnde Extension" : sonst
Das ist in der Tat verwirrend/störend... Dann sollte wohl besser nichts angezeigt werden als etwas falsches.
Die ganze Sache/Einschränkung mit dem Context ist mir auch noch etwas unsympatisch.
 
Das Resultat:
1) das Pickup wird an die Subskripbierten Snoms signalisiert.
2) Als Callerid wird im Display angezeigt:

- "Callerid -> #klingelnde Extension" : falls die Extension die anruft aus dem Context stammt, in dem die Hints sind. Vg. Doku von notifycid
- "#klingelnde Extension -> #klingelnde Extension" : sonst

letzters ist ziemlich sinnlos. Aber w. des fehlenden Whiles wohl nicht zu vermeiden.

So ist die Pickup-Funktion in der Version 1.6.2 momentan eigentlich reichlich sinnlos. Denn das Entscheidene, nämlich die Anzeige der Caller-ID bei externen Anrufen, funktioniert nicht, oder sehe ich das falsch?
Oder gibt es hier irgendeinen Trick, es doch zum laufen zu bringen?

Gruss
Thomas
 
Nun, laut Doku:

notifycid = ignore-context ; Control whether caller ID information is sent along with
; dialog-info+xml notifications (supported by snom phones).
; Note that this feature will only work properly when the
; incoming call is using the same extension and context that
; is being used as the hint for the called extension.
This means
; that it won't work when using subscribecontext for your sip
; user or peer (if subscribecontext is different than context).
; This is also limited to a single caller, meaning that if an
; extension is ringing because multiple calls are incoming,
; only one will be used as the source of caller ID. Specify
; 'ignore-context' to ignore the called context when looking
; for the caller's channel. The default value is 'no.' Setting
; notifycid to 'ignore-context' also causes call-pickups attempted
; via SNOM's NOTIFY mechanism to set the context
; for the call pickup
; to PICKUPMARK.

Wenn ich das richtig verstehe, müsste ich also meine hints in den Incoming-Extern-Context meines Diaplans verlegen und im Snom die komplette (externe) Nummer im BLF konfigurieren!?!? Seht ihr das auch so?
Ich hab's bisher nicht probiert, weil
a) ich das o.g. nicht ganz verstehe
b) ich keinen Bock drauf habe, so viel zu ändern
c) dann ja wohl auch die internen hints nicht mehr gehen (wäre wohl zu verschmerzen).

Gruß
Volker
 
Hi,

mal eine Frage in die Runde, nachdem zumindest elzoido und meinereiner mit dem Pickup ein Problem hat.

Hat das eigentlich schon jemand gebacken bekommen mit dem Pickup, Snom und der Asterisk-Version 1.6.2?

Für Tipps wäre ich dankbar.

Gruss
Thomas
 
Nochmal...

Hi,

ich wollte mal meine Frage in die Runde auffrischen, ob schon jemand ein korrektes Pickup mit Snom und Asterisk 1.6.2 realisieren konnte.

Mit "korrekt" meine ich, dass die externe Caller-ID auch angezeigt wird und nicht "#klingelnde Extension -> #klingelnde Extension"...

Für Tipps wäre ich dankbar.

Gruss
Thomas
 
Hallo,

so wie ich das sehe müsste der Pickup-Patch doch schon in Version 1.6.2.0-rc6 drin sein, oder irre ich mich da?

Trotzdem scheint es bei mir nicht zu klappen, die Telefone (Mix aus snom 300, snom 360 und snom 820) verschicken trotz korrekter (meiner Meinung nach) Konfiguration keine Notify-Meldungen für Ringing etc. Dadurch funktionieren natürlich die BLF Tasten nicht.

Normales Pickup über die *8 ist möglich, jedoch dann mit der falschen Nummer im Display (steht halt nur *8 im Display).

Setzte ich die Konfiguration mit der 1.8 svn Trunk Version ein, funktionierten die BLF Tasten problemlos und ich sehe den Pickup Screen mit beiden Nummern ( Nummer -> Nummer 2) ...

In diesem Thread stehen so viele Informationen, dass man irgendwie leicht den Überblick verliert was jetzt eigentlich genau zu machen ist.

sip show subscriptions zeigt alles richtig an, nur ist "Last state" immer auf Idle.
core show hints zeigt auch alles korrekt an, die Anzahl der Watchers passt, die Extensions auch. Nur hier ist der Status auch immer auf "State:Idle".

Könnte mir bitte jemand sagen, was aktuell alles bei der Version 1.6.2.0-rc6 einzustellen ist, damit Pickup , z.B., mit *8 mit angezeigter richtiger Nummer funktioniert? BLF ist dann eher nur nebensächlich.

Schon mal vielen Dank im Voraus.
 
jo pickup ist drin. Bei mir funktioniert das mit BLF und pickup prima.
Wenn ein Gespräch von "aussen" z.B. ISDN ankommt klingelt ein snom und ich sehe an den anderen snom die Taste blinken und im display steht die nummer vom entsprechenden snom apparat(nicht die nummer die anruft). Jetz kann ich an irgendeinem snom die blinkende Taste drücken und hole mir das gespräch heran.
Oder derjenige am klingelnden snom nimmt ab und verbindet an einen anderes snom dann sieht man im display vom angerufenen die nummer vom snom.

Also niemals die nummer von "aussen"

Ich habe nichts an den Snom´s geändert. Es steht immer noch
"<sip:[email protected];user=phone>|*8" in den Funktionstasten
als Nebenstelle.

Angeblich soll es aber auch ohne gehen. Leider keine Zeit das zu testen.

Gruss,

Jörg
 
Hi jackfritt,

erstmal Danke für die Infos.
Hast du dafür was spezielles in der sip.conf oder extensions.conf von Asterisk 1.6.2.0-rc6 drin stehen?

Wenn ich es genau so wie bei dir ins Telefon eintrage, funktioniert die BLF Anzeige nicht. Das Pickup mit der richtigen Nummer funktioniert nicht mit *8 und auch nicht mit Funktionstasten die als BLF / Nebenstelle belegt sind.

Meine extensions.conf:
Code:
[general]
static=yes
writeprotect=no
;autofallthrough=no
;extenpatternmatchnew=no
clearglobalvars=no
;priorityjumping=yes
;userscontext=default

[globals]

[intern-test]

;Internanrufe Test
;------------------------------
exten => 40,hint,SIP/40
exten => 50,hint,SIP/50
exten => 60,hint,SIP/60


exten => _XX,1,Dial(SIP/${EXTEN})

exten => 600,1,Playback(demo-echotest)
exten => 600,n,Echo
exten => 600,n,Playback(demo-echodone)
exten => 600,n,hangup

exten => 100,n,Dial(SIP/40&SIP/50&SIP/60)

; Pickup Alternative
exten => _*0X.,1,NoOp(${CALLERID(num)} will Anruf von ${EXTEN:2} holen)
exten => _*0X.,n,Pickup(${EXTEN:2}@intern-test)

sip.conf:
Code:
[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
srvlookup=yes 
;notifymimetype=text/plain
;buggymwi=no
;vmexten=voicemail

allowtransfer=yes
allowsubscribe=yes
notifyringing=yes
notifyhold=yes
notifycid=yes
language=de

[40]
name=40
callgroup=1
callerid=40
canreinvite=yes
context=intern-test
host=dynamic
language=de
nat=no
pickupgroup=1
secret=pass-40
type=friend
username=40
disallow=all
allow=alaw;ulaw;g729;ilibc;gsm
cancallforward=yes
subscribecontext=intern-test

[50]
name=50
callgroup=1
callerid=50
canreinvite=yes
context=intern-test
host=dynamic
language=de
nat=no
pickupgroup=1
secret=pass-50
type=friend
username=50
disallow=all
allow=alaw;ulaw;g729;ilibc;gsm
cancallforward=yes
subscribecontext=intern-test

[60]
name=60
callgroup=1
callerid=60
canreinvite=yes
context=intern-test
host=dynamic
language=de
nat=no
pickupgroup=1
secret=pass-60
type=friend
username=60
disallow=all
allow=alaw;ulaw;g729;ilibc;gsm
cancallforward=yes
subscribecontext=intern-test

*CLI> sip show subscriptions
Code:
Peer             User        Call ID          Extension        Last state     Type            Mailbox    Expiry
10.10.4.248      50         3c26717ebe6a-f2  40@intern-test  Idle           dialog-info+xml <none>     003600
10.10.4.248      50         3c26717ecedd-sn  60@intern-test  Idle           dialog-info+xml <none>     003600
2 active SIP subscriptions

*CLI> core show hints
Code:
    -= Registered Asterisk Dial Plan Hints =-
                    40@intern-test       : SIP/40               State:Idle            Watchers  1
                    50@intern-test       : SIP/50               State:Idle            Watchers  0
                    60@intern-test       : SIP/60               State:Idle            Watchers  1
----------------
- 3 hints registered


Ist jetzt etwas gekürzt, aber so sollte es ja eigentlich funktionieren, oder mache ich irgend etwas falsch?

Bin für jeden Tipp dankbar.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,183
Beiträge
2,247,565
Mitglieder
373,730
Neuestes Mitglied
Repeter
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.