PDA

Επιστροφή στο Forum : [Asterisk-FreePBX] Εμφάνιση ονόματος καλούμενου αριθμού στις εξερχόμενες κλήσεις.



kronos911
02-11-16, 03:50
Μετά από ερώτημα του μέλους stelakis1914 στο thread FreePBX + dongle και λίγο Google, έχουμε αυτήν την δυνατότητα. Δηλαδή όταν καλούμε έναν αριθμό και είναι στο asterisk phonebook μπορεί να εμφανίζετε το όνομα του στη οθόνη του τηλεφώνου μας αντί για το CID:Αριθμός.

Για να «ρυθμίσουμε» τον asterisk έτσι ώστε να μα εμφανίζει το όνομα θα πρέπει να παρακάμψουμε την φυσιολογική συμπεριφορά του freepbx κατά τις εξερχόμενες κλήσεις. Αυτό γίνετε βάζοντας αντίγραφα δυο μακρό-εντολών στο αρχείο /etc/asterisk/extensions_override_freepbx.conf. Κατά 99% αυτό το αρχείο πρέπει να είναι άδειο. Οι προχωρημένοι χρήστες του asterisk ή όσοι έχουν εγκαταστήσει το fop2 θα έχουν κάτι σε αυτό το αρχείο.

Ο κώδικας που πρέπει να μπει σε αυτό το αρχείο είναι ο παρακάτω.

Για asterisk 11


[macro-dialout-trunk]
exten => s,1,Set(DIAL_TRUNK=${ARG1})
exten => s,n,AGI(trunkbalance.php,${ARG1},${ARG2})
exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1())
exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1)
exten => s,n,Set(DIAL_NUMBER=${ARG2})
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS})
exten => s,n,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})
exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax)
exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid)
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${IF($["${DB_EXISTS(TRUNK/${DIAL_TRUNK}/dialopts)}" = "1"]?${DB_RESULT}:${TRUNK_OPTIONS})})
exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})
exten => s,n(skipoutcid),GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1())
exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)})
exten => s,n,ExecIf($["${MOHCLASS}"!="default" & "${MOHCLASS}"!="" & "${FORCE_CONFIRM}"="" ]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS}))
exten => s,n,ExecIf($["${FORCE_CONFIRM}"!="" ]?Set(DIAL_TRUNK_OPTIONS=${DIAL_TRUNK_OPTIONS}M(confirm)))
exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)
exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1)
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER}))
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)}))
; -------- custom code starts here

exten => s,n,ExecIf($["${DB(cidname/${DIAL_NUMBER:-10})}" != ""]?Set(CONNECTEDLINE(name,i)=${DB(cidname/${DIAL_NUMBER:-10})}))

; -------- custom code ends here
exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM}${OUT_${DIAL_TRUNK}_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)
exten => s,n(customtrunk),Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)})
exten => s,n,Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)})
exten => s,n,Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)})
exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum)
exten => s,n(outnum),Set(the_num=${OUTNUM})
exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)
exten => s,n(chanfull),Noop(max channels used up)

exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now)
exten => s-ANSWER,n,Macro(hangupcall,)

exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
exten => s-NOANSWER,n,Progress
exten => s-NOANSWER,n,Playback(number-not-answering,noanswer)
exten => s-NOANSWER,n,Congestion(20)

exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up)
exten => s-INVALIDNMBR,n,Progress
exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer)
exten => s-INVALIDNMBR,n,Busy(20)

exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up)
exten => s-CHANGED,n,Playtones(busy)
exten => s-CHANGED,n,Busy(20)

exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})})
exten => _s-.,n,Goto(${RC},1)

exten => 17,1,Goto(s-BUSY,1)

exten => 18,1,Goto(s-NOANSWER,1)

exten => 22,1,Goto(s-CHANGED,1)

exten => 23,1,Goto(s-CHANGED,1)

exten => 1,1,Goto(s-INVALIDNMBR,1)

exten => 28,1,Goto(s-INVALIDNMBR,1)

exten => _X,1,Goto(continue,1)

exten => _X.,1,Goto(continue,1)

exten => continue,1(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)
exten => continue,n,Set(CALLERID(number)=${AMPUSER})

exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk)

exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook)

exten => h,1,Macro(hangupcall,)

;--== end of [macro-dialout-trunk] ==--;

[macro-outbound-callerid]
exten => s,1,ExecIf($["${CALLINGPRES_SV}" != ""]?Set(CALLERPRES()=${CALLINGPRES_SV}))
exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))
; -------------- custom code starts here

exten => s,n,ExecIf($["${DB(cidname/${DIAL_NUMBER:-10})}" != ""]?Set(CDR(userfield)=${DB(cidname/${DIAL_NUMBER:-10})}))

; -------------- custom code ends here
exten => s,n(start),GotoIf($[ $["${REALCALLERIDNUM}" = ""] | $["${KEEPCID}" != "TRUE"] | $["${OUTKEEPCID_${ARG1}}" = "on"] ]?normcid)
exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass)
exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${AMPUSER}/outboundcid)})
exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}})
exten => s,n,GotoIf($["${EMERGENCYROUTE:1:2}" = "" | "${EMERGENCYCID:1:2}" = ""]?trunkcid)
exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
exten => s,n,Set(CDR(outbound_cnum)=${CALLERID(num)})
exten => s,n,Set(CDR(outbound_cnam)=${CALLERID(name)})
exten => s,n(exit),MacroExit()
exten => s,n(trunkcid),ExecIf($[${LEN(${TRUNKOUTCID})} != 0]?Set(CALLERID(all)=${TRUNKOUTCID}))
exten => s,n(usercid),ExecIf($[${LEN(${USEROUTCID})} != 0]?Set(CALLERID(all)=${USEROUTCID}))
exten => s,n,ExecIf($[${LEN(${TRUNKCIDOVERRIDE})} != 0 | ${LEN(${FORCEDOUTCID_${ARG1}})} != 0]?Set(CALLERID(all)=${IF($[${LEN(${FORCEDOUTCID_${ARG1}})}=0]?${TRUNKCIDOVERRIDE}:${FORCEDOUTCID_${ARG1}})}))
exten => s,n(hidecid),ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES()=prohib_passed_screen))
exten => s,n,Set(CDR(outbound_cnum)=${CALLERID(num)})
exten => s,n,Set(CDR(outbound_cnam)=${CALLERID(name)})

;--== end of [macro-outbound-callerid] ==--;


Για asterisk 13*


[macro-dialout-trunk]
include => macro-dialout-trunk-custom
exten => s,1,Set(DIAL_TRUNK=${ARG1})
exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1())
exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1)
exten => s,n,Set(DIAL_NUMBER=${ARG2})
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS})
exten => s,n,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})
exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax)
exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid)
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${IF($["${DB_EXISTS(TRUNK/${DIAL_TRUNK}/dialopts)}" = "1"]?${DB_RESULT}{TRUNK_OPTIONS})})
exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})
exten => s,n(skipoutcid),GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1())
exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)})
exten => s,n,ExecIf($["${MOHCLASS}"!="default" & "${MOHCLASS}"!="" & "${FORCE_CONFIRM}"="" ]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS}))
exten => s,n,ExecIf($["${FORCE_CONFIRM}"!="" ]?Set(DIAL_TRUNK_OPTIONS=${DIAL_TRUNK_OPTIONS}M(confirm)))
exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)
exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1)
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER}))
exten => s,n,ExecIf($[$["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""] & $["${CALLERID(name)}"!="hidden"]]?Set(CONNECTEDLINE(name,i)=CID{CALLERID(number)}))
exten => s,n,ExecIf($[$["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""] & $["${CALLERID(name)}"="hidden"]]?Set(CONNECTEDLINE(name,i)=CIDHidden)${CALLERID(number)}))
; -------- custom code starts here

exten => s,n,ExecIf($["${DB(cidname/${DIAL_NUMBER:-10})}" != ""]?Set(CONNECTEDLINE(name,i)=${DB(cidname/${DIAL_NUMBER:-10})}))

; -------- custom code ends here
exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM}${OUT_${DIAL_TRUNK}_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)
exten => s,n(customtrunk),Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)})
exten => s,n,Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)})
exten => s,n,Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)})
exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum)
exten => s,n(outnum),Set(the_num=${OUTNUM})
exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)
exten => s,n(chanfull),Noop(max channels used up)

exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now)
exten => s-ANSWER,n,Macro(hangupcall,)

exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
exten => s-NOANSWER,n,Progress
exten => s-NOANSWER,n,Playback(number-not-answering,noanswer)
exten => s-NOANSWER,n,Congestion(20)

exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up)
exten => s-INVALIDNMBR,n,Progress
exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer)
exten => s-INVALIDNMBR,n,Busy(20)

exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up)
exten => s-CHANGED,n,Playtones(busy)
exten => s-CHANGED,n,Busy(20)

exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0{HANGUPCAUSE})})
exten => _s-.,n,Goto(${RC},1)

exten => 17,1,Goto(s-BUSY,1)

exten => 18,1,Goto(s-NOANSWER,1)

exten => 22,1,Goto(s-CHANGED,1)

exten => 23,1,Goto(s-CHANGED,1)

exten => 1,1,Goto(s-INVALIDNMBR,1)

exten => 28,1,Goto(s-INVALIDNMBR,1)

exten => _X,1,Goto(continue,1)

exten => _X.,1,Goto(continue,1)

exten => continue,1(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)
exten => continue,n,ExecIf($["${AMPUSER}"!="" ]?Set(CALLERID(number)=${AMPUSER}))

exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk)

exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook)

exten => h,1,Macro(hangupcall,)

;--== end of [macro-dialout-trunk] ==--;


[macro-outbound-callerid]
include => macro-outbound-callerid-custom
exten => s,1,ExecIf($["${CALLINGNAMEPRES_SV}" != ""]?Set(CALLERPRES(name-pres)=${CALLINGNAMEPRES_SV}))
exten => s,n,ExecIf($["${CALLINGNUMPRES_SV}" != ""]?Set(CALLERPRES(num-pres)=${CALLINGNUMPRES_SV}))
exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))
; -------------- custom code starts here

exten => s,n,ExecIf($["${DB(cidname/${DIAL_NUMBER:-10})}" != ""]?Set(CDR(userfield)=${DB(cidname/${DIAL_NUMBER:-10})}))

; -------------- custom code ends here
exten => s,n(start),GotoIf($[ $["${REALCALLERIDNUM}" = ""] | $["${KEEPCID}" != "TRUE"] | $["${OUTKEEPCID_${ARG1}}" = "on"] ]?normcid)
exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass)
exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${AMPUSER}/outboundcid)})
exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}})
exten => s,n,GotoIf($["${EMERGENCYROUTE:1:2}" = "" | "${EMERGENCYCID:1:2}" = ""]?trunkcid)
exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
exten => s,n,Set(CDR(outbound_cnum)=${CALLERID(num)})
exten => s,n,Set(CDR(outbound_cnam)=${CALLERID(name)})
exten => s,n(exit),MacroExit()
exten => s,n(trunkcid),ExecIf($[${LEN(${TRUNKOUTCID})} != 0]?Set(CALLERID(all)=${TRUNKOUTCID}))
exten => s,n(usercid),ExecIf($[${LEN(${USEROUTCID})} != 0]?Set(CALLERID(all)=${USEROUTCID}))
exten => s,n,ExecIf($[${LEN(${TRUNKCIDOVERRIDE})} != 0 | ${LEN(${FORCEDOUTCID_${ARG1}})} != 0]?Set(CALLERID(all)=${IF($[${LEN(${FORCEDOUTCID_${ARG1}})}=0]?${TRUNKCIDOVERRIDE}:${FORCEDOUTCID_${ARG1}})}))
exten => s,n(hidecid),ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES(name-pres)=prohib_passed_screen))
exten => s,n,ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES(num-pres)=prohib_passed_screen))
exten => s,n,Set(CDR(outbound_cnum)=${CALLERID(num)})
exten => s,n,Set(CDR(outbound_cnam)=${CALLERID(name)})

;--== end of [macro-outbound-callerid] ==--;



Με το πρόγραμμα winscp πηγαίνουμε στον κατάλογο /etc/asterisk, βρίσκουμε το αρχείο extensions_override_freepbx.conf και πατάμε το πλήκτρο F4. Θα μας ανοίξει το σημειωματάριο ή όποιο άλλο πρόγραμμα έχουμε για την επεξεργασία αρχείων απλού κειμένου. Αν είναι άδειο τότε απλά κάνουμε επικόλληση του κώδικα. Αλλιώς πηγαίνουμε στο τέλος του αρχείου και με μια τουλάχιστον κενή γραμμή ανάμεσα στο προηγούμενο μπλοκ κώδικα, κάνουμε επικόλληση του δικού μας κώδικα. Αποθηκεύουμε και κλείνουμε το αρχείο.

Μπαίνουμε με putty σαν root και δίνουμε την εντολή rasterisk –x “dialplan reload” Αν όλα έχουν πάει καλά τότε με την επομένη εξερχόμενη κλήση που θα κάνετε και εφόσον ο αριθμός βρεθεί στο asterisk phonebook τότε στην οθόνη του sip τηλεφώνου σας θα εμφανίζετε το όνομα αντί για το CID:Αριθμός. Επίσης στο CDR θα εμφανίζετε το όνομα στο πεδίο userfield.

*γραμμές τύπου
WARNING[1819]: func_cdr.c:377 cdr_write_callback: CDR requires a value (CDR(variable)=value) στο log είναι φυσιολογικές λόγου πιθανού bug (http://community.freepbx.org/t/cdr-reports-not-working/24519/5) που έχει το cdr

dino_sauro00
04-11-16, 02:51
Καταρχήν kronos911 τις ευχαριστίες μου γι αυτό το post. Φοβερά χρήσιμο.
Μία ερώτηση: Τα dialout-trunk & outbound-trunk που παραθέτεις, πρέπει να μπουν ως έχουν ή να βάλουμε αυτά που έχει ο καθένας στη distro του. Π.χ το δικό μου dialout-trunk είναι διαφορετικο από αυτό με το οποίο πρέπει να κάνω την αντικατάσταση. Τί γίνεται σε αυτή την περίπτωση?

kronos911
04-11-16, 08:30
Καταρχήν kronos911 τις ευχαριστίες μου γι αυτό το post. Φοβερά χρήσιμο.
Μία ερώτηση: Τα dialout-trunk & outbound-trunk που παραθέτεις, πρέπει να μπουν ως έχουν ή να βάλουμε αυτά που έχει ο καθένας στη distro του. Π.χ το δικό μου dialout-trunk είναι διαφορετικο από αυτό με το οποίο πρέπει να κάνω την αντικατάσταση. Τί γίνεται σε αυτή την περίπτωση?

Τα macro που παραθετω είναι από καθαρο freepbx (το 11 από distro και το 13 από raspbx).

Η δικάσου διανομή πια είναι?

Η όλη δουλεία γίνετε με τις δυο γραμμές που μπαίνουν στα macro αντίστοιχα. Αν μπορείς να καταλάβεις σε πιο σημείο μπαίνουν προσαρμόζεις τα δικά σου αναλόγως. Αλλιώς στείλε μου τα μαζί με την έκδοση που φοράς.

dino_sauro00
04-11-16, 11:26
Να 'σαι καλά. Είναι πολύ εύκολη η προσθήκη απλά επειδή χρησιμοποιώ την PBXIAF και είχα κάνει και κάποια ψιλο-customisation δεν ήμουν σίγουρος για τον τρόπο.
Έκανα ήδη την αλλαγή και περιμένω να δω αν δουλεύει και στο τηλέφωνο (το cdr δουλεύει μια χαρά και το bug στο οποίο αναφέρθηκες επίσης :) )

Για άλλη μια φορά σε ευχαριστώ για την πολύτιμη βοήθειά σου

italianrulez
18-05-17, 23:28
Καλησπερα,

ακολουθησα τα βηματα και περνω error pbx.c:12485 ast_context_verify_includes: Context 'macro-dialout-trunk' tries to include nonexistent context 'macro-dialout-trunk-custom'


kai

[2017-05-18 23:28:23] WARNING[5793][C-00000017]: res_agi.c:1681 launch_script: Failed to execute '/var/lib/asterisk/agi-bin/trunkbalance.php': File does not exist.

Παρατηρησα οτι στο cdr στο πεδιο userfield πλεον μου εμφανιζει το ονομα αλλα δεν μου το εμφανιζει στην συσκευη

kronos911
19-05-17, 00:59
Καλησπερα,

ακολουθησα τα βηματα και περνω error pbx.c:12485 ast_context_verify_includes: Context 'macro-dialout-trunk' tries to include nonexistent context 'macro-dialout-trunk-custom'


kai

[2017-05-18 23:28:23] WARNING[5793][C-00000017]: res_agi.c:1681 launch_script: Failed to execute '/var/lib/asterisk/agi-bin/trunkbalance.php': File does not exist.

Παρατηρησα οτι στο cdr στο πεδιο userfield πλεον μου εμφανιζει το ονομα αλλα δεν μου το εμφανιζει στην συσκευη


Από το /etc/asterisk/extensions_override_freepbx.conf μπορείς να σβήσεις την γραμμή

exten => s,n,AGI(trunkbalance.php,${ARG1},${ARG2})
Είναι κομμάτι από το δικό μου κέντρο που δεν το έχεις εσύ.

Όσο για το Context 'macro-dialout-trunk' tries to include nonexistent context 'macro-dialout-trunk-custom' είναι απλή προειδοποίηση.

Ποια έκδοση του asterisk τρέχεις;

italianrulez
19-05-17, 01:04
αστεριας 11

kronos911
19-05-17, 01:40
αστεριας 11


Οι ρυθμίσεις των συσκευών σου όσο αναφορά το caller id έχουν ρυθμιστεί για να δέχονται αλλαγές κατά την διάρκεια της κλήσης (remote pai pai κτλ)

italianrulez
19-05-17, 02:01
Δεν νομιζω οτι εχω ρυθμισει κατι τετοιο πως γινετε?

kronos911
19-05-17, 08:24
Δεν νομιζω οτι εχω ρυθμισει κατι τετοιο πως γινετε?


Ποιες συσκευές έχεις (μάρκα, μοντέλο).

Επίσης στα Advanced settings του FreePBX θα βρεις τις επιλογές send rpid και trust rpid. Το πρώτο θα το βάλεις σε PAI και το δεύτερο σε yes. Θα πρέπει να κάνεις την ρύθμιση σε κάθε εσωτερικό που έχεις ήδη φτιάξει (στα νέα θα μπει αυτόματα μετά την αλλαγή στα advanced settings)

italianrulez
19-05-17, 13:16
Yealink T23G. Πρεπει να του κανω καποιες ρυθμισεις η θα τις παρει τις αλαγες μολις κανω reboot στο κεντρο?

Εχω βαλει και την αναζητηση απο το threat για το 11888 καπου αναφερεις οτι το superfecta κραταει τους αριθμους υπαρχει περιπτωση για μαζικη αποθηκευση η να κανει ανακτηση οτι εχει βρει απο το 11888 και να το εμφανιζει οταν το καλουμε?


Εβαλα στις ρυθμισεις του yealink απο την καρτελα advanced Caller ID Source = RPID-PAI-FROM και θα κανω δοκιμες

kronos911
19-05-17, 14:54
Yealink T23G. Πρεπει να του κανω καποιες ρυθμισεις η θα τις παρει τις αλαγες μολις κανω reboot στο κεντρο?

Εχω βαλει και την αναζητηση απο το threat για το 11888 καπου αναφερεις οτι το superfecta κραταει τους αριθμους υπαρχει περιπτωση για μαζικη αποθηκευση η να κανει ανακτηση οτι εχει βρει απο το 11888 και να το εμφανιζει οταν το καλουμε?


Εβαλα στις ρυθμισεις του yealink απο την καρτελα advanced Caller ID Source = RPID-PAI-FROM και θα κανω δοκιμες

Σωστά ρύθμισες το yealink.

Αν βάλεις με την σειρά τις πηγές στο superfecta (superfecta cache, asterisk phonebook, greece whitepages) τότε όπου βρει πρώτα το όνομα θα σταματήσει. Συνήθως είναι το superfecta cache αλλά θέλει λίγο χρόνο να γεμίσει μια μια τις εγγραφές.

italianrulez
19-05-17, 16:14
Εβαλα τις ρυθμισεις τα εκανα ολα reboot τα εσβησα τα ξαναπερασα τπτ!! To yealink αρνειτε να βγαλει το ονομα στις εξερχομενες. Στο cdr-->userfield μου εμφανιζει κανονικοτα το ονομα στα ελληνικα οπως το εχω στο phonebook.

Εβαλα σε καθε παλιο extension μεσα απο το frepbx

Trust RPID -->yes
Send RPID--> Send Remote-Party-ID header

και παλι τιποτα το yealink

kronos911
19-05-17, 18:14
Εβαλα τις ρυθμισεις τα εκανα ολα reboot τα εσβησα τα ξαναπερασα τπτ!! To yealink αρνειτε να βγαλει το ονομα στις εξερχομενες. Στο cdr-->userfield μου εμφανιζει κανονικοτα το ονομα στα ελληνικα οπως το εχω στο phonebook.

Εβαλα σε καθε παλιο extension μεσα απο το frepbx

Trust RPID -->yes
Send RPID--> Send Remote-Party-ID header

και παλι τιποτα το yealink



Δοκίμασε στα yealink το PAI-RPID-FROM

italianrulez
19-05-17, 18:37
Λοιπον το δοκιμασα και αυτο και μου βγαζει το ονομα πανω στην lcd αφου το σηκωσει ο αλλος. Ετσι πρεπει να δουλευει? η και κατα την διαρκεια της κλησης πρεπει να μου βγαζει το ονομα ασχετα αν απαντησει?

Επισης οταν δεν εχω περασμενο ονομα μεσα στο phonebook μου βγαζει το CID του TRUNK και διπλα το νουμερο που καλω για την εξερχομενη

kronos911
20-05-17, 15:05
Λοιπον το δοκιμασα και αυτο και μου βγαζει το ονομα πανω στην lcd αφου το σηκωσει ο αλλος. Ετσι πρεπει να δουλευει? η και κατα την διαρκεια της κλησης πρεπει να μου βγαζει το ονομα ασχετα αν απαντησει?

Αυτό δεν το έχω προσέξει.


Επισης οταν δεν εχω περασμενο ονομα μεσα στο phonebook μου βγαζει το CID του TRUNK και διπλα το νουμερο που καλω για την εξερχομενη

Ναι σωστά, αυτή είναι η φυσιολογική συμπεριφορά προ αλλαγών.

italianrulez
20-05-17, 15:52
το δικο μου το asterisk εχει φαντασματα παντα πριν τις αλαγες απο εδω, μου εβγαζε μονο το νουμερο που καλουσα... πρωτη φορα βλεπω το trunk διπλα στο νουμερο στο lcd μπορω να το αφαιρεσω η θα χασω και την αναγνωριση απο το superfecta?

kronos911
20-05-17, 17:03
το δικο μου το asterisk εχει φαντασματα παντα πριν τις αλαγες απο εδω, μου εβγαζε μονο το νουμερο που καλουσα... πρωτη φορα βλεπω το trunk διπλα στο νουμερο στο lcd μπορω να το αφαιρεσω η θα χασω και την αναγνωριση απο το superfecta?

Αν δεν σου αρέσει το CID:<ΑΡΙΘΜΟΣ> τότε μπορείς να αφαιρέσεις την γραμμή


exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)}))

από το αρχείο /etc/asterisk/extensions_override_freepbx.conf βάζοντας ένα # στην αρχή της. Μετά θα πρέπει να κάνεις dialplan reload από το asterisk cli.

italianrulez
20-05-17, 17:31
Σε ευχαριστω πολυ! Ολα δουλευουν τελεια εκτος του οτι πρεπει να απαντησει ο αλλος την κληση για να μου γραψει το ονομα

grousso
04-06-19, 17:40
Από ότι φαίνεται το Asterisk Phonebook δεν περιλαμβάνεται πλέον στο freepbx.

Υπάρχει κάποια εναλλακτική για τηλεφωνικό κατάλογο;

Το βρήκα ευχαριστώ

kronos911
05-12-21, 17:57
Χαιρετίζω όλη την ομάδα.
Επανέρχομαι στο εν λόγο θέμα με μια ποιο απλή και μόνιμη λύση, σε σχέση με το αρχικό post.

Με τα παρακάτω βήματα θα έχουμε ενσωματωμένο την «αναζήτηση» του module CID Superfecta στις εξερχόμενες κλήσης μας.

Προϋποθέσεις:
Να έχουμε εγκαταστημένα τα παρακάτω modules:

Asterisk Phonebook
ή
FreePBX Contact Manager (αυτό αντικαθιστά τα modules Asterisk Phonebook και Speed Dial)
CID Superfecta

Την πηγή του Superfecta που αντλεί ονόματα από το 11888. (Install (https://www.adslgr.com/forum/threads/982803-Asterisk-Caller-ID-Lookup-%CE%B1%CF%80%CE%BF-11888-gr?p=6148105#post6148105), τελευταία έκδοση (https://www.adslgr.com/forum/threads/982803-Asterisk-Caller-ID-Lookup-%CE%B1%CF%80%CE%BF-11888-gr?p=6394655#post6394655))

Να έχουμε ρυθμίσει το Default scheme του CID Superfecta με την παρακάτω σειρά

Asterisk Phonebook (εφόσον το έχουμε εγκατεστημένο)
FreePBX Contactmanager (εφόσον το έχουμε εγκατεστημένο)
Superfecta cache
Greece 11888

Στην καρτέλα Advanced του κάθε εσωτερικού να είναι Yes τα παρακάτω:

Trust RPID
Send Connected Line

Σε περίπτωση που έχει γίνει η υλοποίηση από το πρώτο post, αυτό πρέπει να αναιρεθεί με την διαγραφή των καταχωρίσεων στο αρχείο
/etc/asterisk/extensions_override_freepbx.conf

Με το πρόγραμμα winscp πηγαίνουμε στον κατάλογο /etc/asterisk, βρίσκουμε το αρχείο extensions_custom.conf και πατάμε το πλήκτρο F4. Θα μας ανοίξει το σημειωματάριο ή όποιο άλλο πρόγραμμα έχουμε για την επεξεργασία αρχείων απλού κειμένου. Αν είναι άδειο τότε απλά κάνουμε επικόλληση του κώδικα. Αλλιώς πηγαίνουμε στο τέλος του αρχείου και με μια τουλάχιστον κενή γραμμή ανάμεσα στο προηγούμενο μπλοκ κώδικα, κάνουμε επικόλληση του δικού μας κώδικα. Αποθηκεύουμε και κλείνουμε το αρχείο.

Κώδικας


[macro-dialout-trunk-predial-hook]
exten => s,1,NoOp(Trunk ${OUT_${DIAL_TRUNK}}${OUT_${DIAL_TRUNK}_SUFFIX} selected)

exten => s,n,Execif($["${OUT_${DIAL_TRUNK}:0:10}" = "AMP:local/"]?MacroExit())
exten => s,n,GotoIf($["${OUTNUM:0:1}"="1"]?BypassCID)
exten => s,n,GotoIf($["${OUTNUM:0:2}"="00"]?BypassCID)

exten => s,n,Set(OldCIDNum=${CALLERID(num)})
exten => s,n,Set(OldCIDName=${CALLERID(name)})
exten => s,n,Set(CALLERID(num)=${OUTNUM})
exten => s,n,Set(CALLERID(name)=${OUTNUM})

exten => s,n,Set(CIDSFSCHEME=YmFzZV9EZWZhdWx0)
exten => s,n,AGI(/var/www/html/admin/modules/superfecta/agi/superfecta.agi)
exten => s,n,Set(CONNECTEDLINE(name)=${SUPERFECTA_NEW})
exten => s,n,Execif($["${SUPERFECTA_NEW}"!="${OUTNUM}"]?Set(CDR(userfield)=${SUPERFECTA_NEW}))

exten => s,n,Set(CALLERID(num)=${OldCIDNum})
exten => s,n,Set(CALLERID(name)=${OldCIDName})
exten => s,n,Goto(StartPreDialHook)

exten => s,n(BypassCID),Set(CONNECTEDLINE(name)=${OUTNUM})
exten => s,n(StartPreDialHook),MacroExit()



Μπαίνουμε με putty σαν root και δίνουμε την εντολή rasterisk –x “dialplan reload” Αν όλα έχουν πάει καλά τότε με την επομένη εξερχόμενη κλήση που θα κάνετε και εφόσον ο αριθμός βρεθεί τότε στην οθόνη του sip τηλεφώνου σας θα εμφανίζετε το όνομα αντί για το CID:Αριθμός. Επίσης στο CDR θα εμφανίζετε το όνομα στο πεδίο userfield.

@ ADSLgr.com All rights reserved.