PDA

Voir la version complète : Comment récupérer un appel entrant depuis un autre téléphone SIP ?



lordaker
25/05/2018, 10h02
Bonjour à tous,

Je voudrais savoir comment puis-je faire pour récupérer un appel sur une extension 101
via mon extension 103 par exemple. Sauriez-vous comment le faire ?

Bien à vous,
Lordaker

MrSerein
28/05/2018, 16h44
Bonjour,

Qu'entends tu par "récupérer un appel" ?
Est ce que tu veux récupérer un appel sur le poste 103 quand le téléphone 101 sonne ? dans ce cas il s'agit d'une interception d'appel

Si je me trompe pourrais tu expliquer plus en détails ce que tu veux ?
MrSerein

lordaker
28/05/2018, 18h53
Bonjour,

Qu'entends tu par "récupérer un appel" ?
Est ce que tu veux récupérer un appel sur le poste 103 quand le téléphone 101 sonne ? dans ce cas il s'agit d'une interception d'appel

Si je me trompe pourrais tu expliquer plus en détails ce que tu veux ?
MrSerein

Oui, je veux réaliser l'interception de l'appel sur le 101 via mon téléphone SIP 103 lorsque le 101 sonne.
Mais je sais pas comment le faire ? Auriez-vous une idée ? Ou est-ce une fonction native d'Asterisk ?

Bien à vous,
Lordaker

fastm3
28/05/2018, 19h10
oui, c'est natif. pas si simple a implementer que ca parait en dialplan meme si mes souvenirs datent de versions plus vraiment actuelles. Wazo ou freepbx integre ca.
https://wiki.asterisk.org/wiki/display/AST/Call+Pickup
Tu peux soit faire un pickup general ( *8 par defaut generallement ) , tu recuperes le tel qui sonne du groupe ( attention a bien setter le call group et pickup group des extensions pour que ca marche ) . Ou directed pickup ** ext par defaut habituellement, pour une extension particuliere. Avec un tel avec des touches blf, c'est ce qui se passe sous le capot quand tu interceptes un appel en cours ( touche blf du tel qui clignotte )
Francois.

lordaker
29/05/2018, 13h39
oui, c'est natif. pas si simple a implementer que ca parait en dialplan meme si mes souvenirs datent de versions plus vraiment actuelles. Wazo ou freepbx integre ca.
https://wiki.asterisk.org/wiki/display/AST/Call+Pickup
Tu peux soit faire un pickup general ( *8 par defaut generallement ) , tu recuperes le tel qui sonne du groupe ( attention a bien setter le call group et pickup group des extensions pour que ca marche ) . Ou directed pickup ** ext par defaut habituellement, pour une extension particuliere. Avec un tel avec des touches blf, c'est ce qui se passe sous le capot quand tu interceptes un appel en cours ( touche blf du tel qui clignotte )
Francois.

J'ai lu la documentation mais j'ai pas tout compris mais j'arrive à récupérer les appels en interne
entre les poste 101, 102 et 103 en composant les numéros suivants:

_*8101 (pour un appel sur le poste 101)
_*8102 (pour un appel sur le poste 102)
_*8103 (pour un appel sur le poste 103)



[from-internal]
;================================================= ====== internal Calls
exten => _1XX,1,NoOp(## Internal Call to the ${EXTEN} ##)
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Dial(PJSIP/${EXTEN},20)
same => n,VoiceMail(${EXTEN},u)
same => n,Hangup()

;================================================= ======= Pickup Phone Calls
exten => _*8101,1,Pickup(101@from-internal)
same => n,Hangup()

exten => _*8102,1,Pickup(102@from-internal)
same => n,Hangup()

exten => _*8103,1,Pickup(103@from-internal)
same => n,Hangup()




Mais pour les appels entrants via mon CID ci-dessous, ça fonctionne pas, auriez-vous une idée de comment résoudre cet difficulté ?



[from-external]
exten => _028992018,1,NoOp(## Incoming Call from ${CALLERID(all)} ##)
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,System(echo "--appel_sortant --- callerid : ${CALLERID(num)} ---- ${STRFTIME(${EPOCH},,%Y/%m/%d %H:%M:%S)} ----" >> /var/spool/asterisk/log/debug.txt)
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Set(TYPE=IN)
same => n,Set(ODBC(CALLSHISTORY()=${NOW},${POSTE},${CALLER ID(num)},${EXTEN},${TYPE}))
same => n,Dial(PJSIP/101,60)
same => n,VoiceMail(101)
same => n,Hangup()

exten => _*8101,1,Pickup(101@from-external)
same => n,Hangup()

olppp
29/05/2018, 14h41
il faut utiliser la variable PICKUPMARK


J'ai lu la documentation mais j'ai pas tout compris mais j'arrive à récupérer les appels en interne
entre les poste 101, 102 et 103 en composant les numéros suivants:

_*8101 (pour un appel sur le poste 101)
_*8102 (pour un appel sur le poste 102)
_*8103 (pour un appel sur le poste 103)



[from-internal]
;================================================= ====== internal Calls
exten => _1XX,1,NoOp(## Internal Call to the ${EXTEN} ##)
same => n,Set(__PICKUPMARK=${EXTEN})
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Dial(PJSIP/${EXTEN},20)
same => n,VoiceMail(${EXTEN},u)
same => n,Hangup()

;================================================= ======= Pickup Phone Calls
;exten => _*8101,1,Pickup(101@from-internal)
; same => n,Hangup()

;exten => _*8102,1,Pickup(102@from-internal)
;same => n,Hangup()

;exten => _*8103,1,Pickup(103@from-internal)
; same => n,Hangup()

exten => _*81xx,1,Pickup(${EXTEN:2}@PICKUPMARK)
same => n,Hangup()



Mais pour les appels entrants via mon CID ci-dessous, ça fonctionne pas, auriez-vous une idée de comment résoudre cet difficulté ?



[from-external]
exten => _028992018,1,NoOp(## Incoming Call from ${CALLERID(all)} ##)
same => Set(__PICKUPMARK=101)
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,System(echo "--appel_sortant --- callerid : ${CALLERID(num)} ---- ${STRFTIME(${EPOCH},,%Y/%m/%d %H:%M:%S)} ----" >> /var/spool/asterisk/log/debug.txt)
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Set(TYPE=IN)
same => n,Set(ODBC(CALLSHISTORY()=${NOW},${POSTE},${CALLER ID(num)},${EXTEN},${TYPE}))
same => n,Dial(PJSIP/101,60)
same => n,VoiceMail(101)
same => n,Hangup()

;exten => _*8101,1,Pickup(101@from-external)
; same => n,Hangup()

lordaker
29/05/2018, 16h22
il faut utiliser la variable PICKUPMARK

Salut @olppp,

Merci pour ta réponse.

J'ai essayé avec PICKUPMARK mais cela ne fonctionne pas. Ni pour les appels en interne que les appels entrants.

Avec Pickup(${EXTEN}@context), sa fonctionne bien en interne, mais pour les appels externe ça fonctionne pas.

Problème de syntaxe ?

olppp
29/05/2018, 18h00
La casse :ouch:

exten => _*81XX,1,Pickup(${EXTEN:2}@PICKUPMARK)
same => n,Hangup()

lordaker
29/05/2018, 18h10
La casse :ouch:

exten => _*81XX,1,Pickup(${EXTEN:2}@PICKUPMARK)
same => n,Hangup()

Non, je l'ai bien écrit dans mon fichier extensions.conf



[from-internal]
;================================================= ====== internal Calls
exten => _1XX,1,NoOp(## Internal Call to the ${EXTEN} ##)
same => n,Set(_PICKUPMARK=${EXTEN})
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Dial(PJSIP/${EXTEN},20)
same => n,VoiceMail(${EXTEN},u)
same => n,Hangup()

;================================================= ======= Pickup Phone Calls
exten => _*81XX,1,Pickup({$EXTEN:2}@PICKUPMARK)
same => n,Hangup()

olppp
30/05/2018, 10h56
:ouch:
Essayes en précisant le context
pas de souligné devant une extension, seulement pour déclarer les pattern.

[from-external]
;exten => _028992018,1,NoOp(## Incoming Call from ${CALLERID(all)} ##)
exten => 028992018,1,NoOp(## Incoming Call from ${CALLERID(all)} ##)
same => Set(__PICKUPMARK=101@from-external)
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,System(echo "--appel_sortant --- callerid : ${CALLERID(num)} ---- ${STRFTIME(${EPOCH},,%Y/%m/%d %H:%M:%S)} ----" >> /var/spool/asterisk/log/debug.txt)
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Set(TYPE=IN)
same => n,Set(ODBC(CALLSHISTORY()=${NOW},${POSTE},${CALLER ID(num)},${EXTEN},${TYPE}))
same => n,Dial(PJSIP/101,60)
same => n,VoiceMail(101)
same => n,Hangup()

encore :ouch: il faut 2 soulignés pour que la variable persiste.

[from-internal]
;================================================= ====== internal Calls
exten => _1XX,1,NoOp(## Internal Call to the ${EXTEN} ##)
same => n,Set(__PICKUPMARK=${EXTEN}@from-internal)
same => n,Ringing()
same => n,Set(NOW=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)})
same => n,Set(REC_FILE_NAME=OUT_${NOW}_${EXTEN}_${POSTE}.w av)
same => n,MixMonitor(${REC_FILE_NAME},b V(1))
same => n,Dial(PJSIP/${EXTEN},20)
same => n,VoiceMail(${EXTEN},u)
same => n,Hangup()

;================================================= ======= Pickup Phone Calls
exten => _*81XX,1,Pickup({$EXTEN:2}@PICKUPMARK)
same => n,Hangup()