Σελ. 1 από 3 123 ΤελευταίαΤελευταία
Εμφάνιση 1-15 από 31

Θέμα: call waiting

  1. #1
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    καλησπέρα. τρέχω asterisk 11 χωρίς gui και έχω ένα sip trunk. Θα ήθελα να ενεργοποιήσω ένα call waiting ώστε αν κάποιο εσωτερικό που είναι κατηλειμένο λάβει μια 2η κλήση:
    -στο εσωτερικό να φαίνεται ότι έχει 2η κλήση
    -σε αυτόν που καλεί να μην λαμβάνει κατευθείαν το busy tone, αλλά μετά από ένα χρονικό διάστημα, πχ 20 δευτερόλεπτα.

    έτσι ώστε να έχω την δυνατότητα να απαντήσω την 2η κλήση ή να την απορρίψω?
    τώρα έρχεται η 2η ερώτηση. σε περίπτωση που θέλω να απαντήσω την 2η κλήση πως την απαντώ και πως βάζω σε hold την 1η κλήση ώστε να ακούσει moh?

  2. #2
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    βοήθεια κανείς, παρακαλώ?

  3. #3
    Εγγραφή
    11-09-2017
    Μηνύματα
    1.638
    Downloads
    1
    Uploads
    0
    ISP
    None
    Στην συσκευή θα πρέπει να δεις αν είναι ενεργοποιημένο. Η κάθε συσκευή χειρίζεται διαφορετικά την 2η κλήση, αφού καταφέρεις να δεχθείς δεύτερη θα δεις και πως δουλεύει.

  4. #4
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    επειδή έχω διαφορετικές συσκευές (αναλογικά μέσω spa), zoipe softphones, Ip Phones, θα ήθελα κάτι κεντρικό από τον asterisk. Να μπορεί να το ενεργοποιεί/απενεργοποιεί όποιος θέλει. πχ με *21 (ενεργοποίηση) και #21(απενεργοποίηση) από την συσκευή.
    Με αρχή αυτό θέλω να στήσω και άλλες λειτουργίες όπως DND, call forward on busy,.. απλά δεν έχω ιδέα πως τα φτιάχνω.

  5. #5
    Εγγραφή
    11-09-2017
    Μηνύματα
    1.638
    Downloads
    1
    Uploads
    0
    ISP
    None
    Κοίτα το call waiting πρέπει να το υποστηρίζει και η συσκευή αλλιώς δεν θα μπορείς να χειριστείς παραπάνω από μία κλήση.
    Μετά το πως θα υλοποιήσεις την λειτουργία είναι άλλο θέμα.

    Για τα υπόλοιπα θα πρέπει να φτιάξεις diaplan που εκτελεί τις λειτουργίες που θες, δεν υπάρχουν μέσα στον asterisk.
    H προσέγγιση που ακολουθεί το freepbx, είναι να χρησιμοποιεί γι αυτές τις λειτουργίες την εσωτερική βάση του asterisk ώστε να αποθηκεύει διάφορα states για το κάθε εσωτερικό και να τα τσεκάρει πρώτα πριν στείλει την κλήση στην συσκευή.
    Θα μπορούσες να ανοίξεις τα αρχεία του freepbx και να πάρεις μια ιδέα για να σε βοηθήσει.

  6. #6
    Εγγραφή
    09-08-2010
    Ηλικία
    43
    Μηνύματα
    513
    Downloads
    0
    Uploads
    0
    Path Level
    Interleaved
    Καλημέρα, ακριβώς το ίδιο το έκανα με τον απλό τρόπο, να βάλω 2 λογαριασμούς σε κάθε συσκευή. Επίσης ενεργοποίησα το Follow me του κάθε βασικού λογαριασμού, ώστε να χτυπάει και στον 2ο, π.χ 101 βασικός λογαριασμός και 102 δεύτερος. Με το που δέχεται κλήση το 101 αν μιλάει να στέλνει την κλήση στο 102. Ετσι στην οθόνη βλέπεις και ποιος σε καλέι στην 2η γραμμή και μπορείς να το απαντήσεις και αυτόματα μπαίνει σε αναμονή η πρώτη γραμμή.

  7. #7
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    θα ήθελα να γίνεται δυναμικά. call forward με *70 και μετά το νούμερο που θέλω να στείλω την κλήση. πχ *70 και το κινητό μου και την επόμενη να κάνω *70 και το σταθερό της δουλειάς.

  8. #8
    Το avatar του μέλους kronos911
    kronos911 Guest
    Τα macro, app του freepbx
    Κώδικας:
    [app-callwaiting-cwoff]
    include => app-callwaiting-cwoff-custom
    exten => *71,1,Macro(user-callerid,)
    exten => *71,n,Set(CONNECTEDLINE(name-charset,i)=utf8)
    exten => *71,n,Set(CONNECTEDLINE(name,i)=Call Waiting: OFF)
    exten => *71,n,Set(CONNECTEDLINE(num,i)=${AMPUSER})
    exten => *71,n,Answer
    exten => *71,n,Wait(1)
    exten => *71,n,Noop(Deleting: CW/${AMPUSER} ${DB_DELETE(CW/${AMPUSER})})
    exten => *71,n(hook_1),Playback(call-waiting&de-activated)
    exten => *71,n,Macro(hangupcall,)
    
    ;--== end of [app-callwaiting-cwoff] ==--;
    
    
    [app-callwaiting-cwon]
    include => app-callwaiting-cwon-custom
    exten => *70,1,Macro(user-callerid,)
    exten => *70,n,Set(CONNECTEDLINE(name-charset,i)=utf8)
    exten => *70,n,Set(CONNECTEDLINE(name,i)=Call Waiting: ON)
    exten => *70,n,Set(CONNECTEDLINE(num,i)=${AMPUSER})
    exten => *70,n,Answer
    exten => *70,n,Wait(1)
    exten => *70,n,Set(DB(CW/${AMPUSER})=ENABLED)
    exten => *70,n(hook_1),Playback(call-waiting&activated)
    exten => *70,n,Macro(hangupcall,)
    
    ;--== end of [app-callwaiting-cwon] ==--;
    
    
    
    [macro-dial-one]
    include => macro-dial-one-custom
    exten => s,1,Set(DEXTEN=${ARG3})
    exten => s,n(setexttocall),ExecIf($[${LEN(${EXTTOCALL})}=0 & ${LEN(${DEXTEN})}>0]?Set(EXTTOCALL=${DEXTEN}))
    exten => s,n,Set(DIALSTATUS_CW=)
    exten => s,n,GosubIf($["${FROM_DID}"!="" & "${SCREEN}"="" & "${DB(AMPUSER/${DEXTEN}/screen)}"!=""]?screen,1())
    exten => s,n,GosubIf($["${DB(CF/${DEXTEN})}"!=""]?cf,1())
    exten => s,n,GotoIf($["${DEXTEN:-1}"="#" | "${DB(DND/${DEXTEN})}"=""]?skip1)
    exten => s,n,Set(DEXTEN=)
    exten => s,n,Set(DIALSTATUS=BUSY)
    exten => s,n(skip1),GotoIf($["${DEXTEN}"=""]?nodial)
    exten => s,n,GotoIf($["${DEXTEN:-1}"="#"]?continue)
    exten => s,n,Set(EXTHASCW=${IF($["${CWIGNORE}"!=""]? :${DB(CW/${DEXTEN})})})
    exten => s,n,GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!="" | "${DB(CFU/${DEXTEN})}"!=""]?next1:cwinusebusy)
    exten => s,n(next1),GotoIf($["${DB(CFU/${DEXTEN})}"!="" & ("${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN")]?docfu:skip3)
    exten => s,n(docfu),Set(DEXTEN=)
    exten => s,n,Set(DIALSTATUS=NOANSWER)
    exten => s,n,Goto(nodial)
    exten => s,n(skip3),GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!=""]?next2:continue)
    exten => s,n(next2),GotoIf($["${EXTENSION_STATE(${DEXTEN})}"="NOT_INUSE" | "${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN"]?continue)
    exten => s,n,ExecIf($["${DB(CFB/${DEXTEN})}"!="" & "${CFIGNORE}"=""]?Set(DIALSTATUS=BUSY))
    exten => s,n,GotoIf($["${EXTHASCW}"!="" | "${DEXTEN:-1}"="#"]?cwinusebusy)
    exten => s,n,Set(DEXTEN=)
    exten => s,n,Set(DIALSTATUS=BUSY)
    exten => s,n,Goto(nodial)
    exten => s,n(cwinusebusy),GotoIf($["${EXTHASCW}"!="" & "${CWINUSEBUSY}"="true"]?next3:continue)
    exten => s,n(next3),ExecIf($["${EXTENSION_STATE(${DEXTEN})}"!="UNAVAILABLE" & "${EXTENSION_STATE(${DEXTEN})}"!="NOT_INUSE" & "${EXTENSION_STATE(${DEXTEN})}"!="UNKNOWN"]?Set(DIALSTATUS_CW=BUSY))
    exten => s,n(continue),GotoIf($["${DEXTEN}"=""]?nodial)
    exten => s,n,GosubIf($["${DEXTEN:-1}"!="#"]?dstring,1():dlocal,1())
    exten => s,n,GotoIf($[${LEN(${DSTRING})}=0]?nodial)
    exten => s,n,GotoIf($["${DEXTEN:-1}"="#"]?skiptrace)
    exten => s,n,GosubIf($[${REGEX("^[\+]?[0-9]+$" ${CALLERID(number)})} = 1]?ctset,1():ctclear,1())
    exten => s,n(skiptrace),Set(D_OPTIONS=${IF($["${NODEST}"!="" & ${REGEX("(M[(]auto-blkvm[)])" ${ARG2})} != 1]?${ARG2}M(auto-blkvm):${ARG2})})
    exten => s,n,Noop(Blind Transfer: ${BLINDTRANSFER}, Attended Transfer: ${ATTENDEDTRANSFER}, User: ${AMPUSER}, Alert Info: ${ALERT_INFO})
    exten => s,n,ExecIf($["${ALERT_INFO}"="" & ${LEN(${AMPUSER})}!=0 & ${LEN(${BLINDTRANSFER})}=0 & ${LEN(${ATTENDEDTRANSFER})}=0]?Set(ALERT_INFO=))
    exten => s,n,ExecIf($[${LEN(${BLINDTRANSFER})}!=0]?Set(ALERT_INFO=))
    exten => s,n,ExecIf($[${LEN(${ATTENDEDTRANSFER})}!=0]?Set(ALERT_INFO=))
    exten => s,n,ExecIf($["${RVOL}"!=""]?Set(ALERT_INFO=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)}\;volume=${RVOL}))
    exten => s,n,ExecIf($["${RVOL}"="" & "${DB(AMPUSER/${EXTTOCALL}/rvolume)}" != ""]?Set(ALERT_INFO=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)}\;volume=${DB(AMPUSER/${EXTTOCALL}/rvolume)}))
    exten => s,n,GosubIf($["${ALERT_INFO}"!="" & "${ALERT_INFO}"!=" "]?func-set-sipheader,s,1(Alert-Info,${ALERT_INFO}))
    exten => s,n,ExecIf($[("${MOHCLASS}"!="default") & ("${MOHCLASS}"!="")]?Set(CHANNEL(musicclass)=${MOHCLASS}))
    exten => s,n,GosubIf($["${QUEUEWAIT}"!=""]?qwait,1())
    exten => s,n,Set(__CWIGNORE=${CWIGNORE})
    exten => s,n,Set(__KEEPCID=TRUE)
    exten => s,n,GotoIf($["${USEGOTO}"="1"]?usegoto,1)
    exten => s,n,GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cidname)}" = "" || "${DB(AMPUSER/${AMPUSER}/cidname)}" = ""]?godial)
    exten => s,n,Gosub(sub-presencestate-display,s,1(${EXTTOCALL}))
    exten => s,n,Set(CONNECTEDLINE(name,i)=${DB(AMPUSER/${EXTTOCALL}/cidname)}${PRESENCESTATE_DISPLAY})
    exten => s,n,Set(CONNECTEDLINE(num)=${EXTTOCALL})
    exten => s,n,Set(D_OPTIONS=${D_OPTIONS}I)
    exten => s,n(godial),Macro(dialout-one-predial-hook,)
    exten => s,n,ExecIf($["${DIRECTION}" = "INBOUND"]?Set(D_OPTIONS=${STRREPLACE(D_OPTIONS,T)}I))
    exten => s,n(dialapp),Noop()
    exten => s,n,Dial(${DSTRING},${ARG1},${D_OPTIONS}b(func-apply-sipheaders^s^1))
    exten => s,n,ExecIf($["${DIALSTATUS}"="ANSWER" & "${CALLER_DEST}"!=""]?MacroExit())
    exten => s,n,ExecIf($["${DIALSTATUS_CW}"!=""]?Set(DIALSTATUS=${DIALSTATUS_CW}))
    exten => s,n,GosubIf($[("${SCREEN}"!=""&("${DIALSTATUS}"="TORTURE"|"${DIALSTATUS}"="DONTCALL"))|"${DIALSTATUS}"="ANSWER"]?s-${DIALSTATUS},1())
    exten => s,n,MacroExit()
    exten => s,n(nodial),Noop()
    exten => s,n,ExecIf($["${DIALSTATUS}" = ""]?Set(DIALSTATUS=NOANSWER))
    exten => s,n,Noop(Returned from dial-one with nothing to call and DIALSTATUS: ${DIALSTATUS})
    exten => s,n,MacroExit()
    
    exten => h,1,Macro(hangupcall,)
    
    exten => usegoto,1,Set(USEGOTO=)
    exten => usegoto,n,Goto(from-internal,${DSTRING},1)
    
    exten => screen,1,GotoIf($["${DB(AMPUSER/${DEXTEN}/screen)}"!="nomemory" | "${CALLERID(number)}"=""]?memory)
    exten => screen,n,ExecIf($[${REGEX("^[0-9a-zA-Z ]+$" ${CALLERID(number)})} = 1]?System(rm -f ${ASTVARLIBDIR}/sounds/priv-callerintros/${CALLERID(number)}.*))
    exten => screen,n(memory),Set(__SCREEN=${DB(AMPUSER/${DEXTEN}/screen)})
    exten => screen,n,Set(__SCREEN_EXTEN=${DEXTEN})
    exten => screen,n,Set(ARG2=${ARG2}p)
    exten => screen,n,Return()
    
    exten => cf,1,Set(CFAMPUSER=${IF($["${AMPUSER}"=""]?${CALLERID(number)}:${AMPUSER})})
    exten => cf,n,ExecIf($["${DB(CF/${DEXTEN})}"="${CFAMPUSER}" | "${DB(CF/${DEXTEN})}"="${REALCALLERIDNUM}" | "${CUT(CUT(BLINDTRANSFER,-,1),/,1)}" = "${DB(CF/${DEXTEN})}" | "${DEXTEN}"="${DB(CF/${DEXTEN})}"]?Return())
    exten => cf,n,ExecIf($["${DB(AMPUSER/${DEXTEN}/cfringtimer)}" != "0" & "${DB(AMPUSER/${DEXTEN}/cfringtimer)}" != ""]?Set(ARG1=${IF($["${DB(AMPUSER/${DEXTEN}/cfringtimer)}"="-1"]? : ${DB(AMPUSER/${DEXTEN}/cfringtimer)})}))
    exten => cf,n,ExecIf($["${DB(AMPUSER/${DEXTEN}/cfringtimer)}" == "0"]?Set(ARG1=${IF($["${DB(FREEPBXCONF/CFRINGTIMERDEFAULT)}"="-1"]? : ${DB(FREEPBXCONF/CFRINGTIMERDEFAULT)})}))
    exten => cf,n,Set(DEXTEN=${IF($["${CFIGNORE}"=""]?"${DB(CF/${DEXTEN})}#": )})
    exten => cf,n,ExecIf($["${DEXTEN}"!=""]?Return())
    exten => cf,n,Set(DIALSTATUS=NOANSWER)
    exten => cf,n,Return()
    
    exten => qwait,1,ExecIf($["${SAVEDCIDNAME}" = ""]?Set(__SAVEDCIDNAME=${CALLERID(name)}))
    exten => qwait,n,Set(ELAPSED=${MATH($[${EPOCH}+30-${QUEUEWAIT}]/60,int)})
    exten => qwait,n,Set(CALLERID(name)=M${ELAPSED}:${SAVEDCIDNAME})
    exten => qwait,n,Return()
    
    exten => ctset,1,Set(DB(CALLTRACE/${DEXTEN})=${CALLERID(number)})
    exten => ctset,n,Return()
    
    exten => ctclear,1,Noop(Deleting: CALLTRACE/${DEXTEN} ${DB_DELETE(CALLTRACE/${DEXTEN})})
    exten => ctclear,n,Return()
    
    exten => dstring,1,Set(DSTRING=)
    exten => dstring,n,Set(DEVICES=${DB(AMPUSER/${DEXTEN}/device)})
    exten => dstring,n,ExecIf($["${DEVICES}"=""]?Return())
    exten => dstring,n,ExecIf($["${DEVICES:0:1}"="&"]?Set(DEVICES=${DEVICES:1}))
    exten => dstring,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)})
    exten => dstring,n,Set(ITER=1)
    exten => dstring,n(begin),Set(THISDIAL=${DB(DEVICE/${CUT(DEVICES,&,${ITER})}/dial)})
    exten => dstring,n,GosubIf($["${ASTCHANDAHDI}" = "1"]?zap2dahdi,1())
    exten => dstring,n,GotoIf($["${THISDIAL:0:5}"!="PJSIP"]?docheck)
    exten => dstring,n,Noop(Debug: Found PJSIP Destination ${THISDIAL})
    exten => dstring,n,GotoIf($[ ${REGEX("(/.+/|@)" ${THISDIAL})} = 1 ]?doset)
    exten => dstring,n,Noop(Debug: Updating PJSIP Destination with PJSIP_DIAL_CONTACTS)
    exten => dstring,n,Set(THISDIAL=${PJSIP_DIAL_CONTACTS(${THISDIAL:6})})
    exten => dstring,n(docheck),GotoIf($["${THISDIAL}"=""]?skipset)
    exten => dstring,n(doset),Set(DSTRING=${DSTRING}${THISDIAL}&)
    exten => dstring,n(skipset),Set(ITER=$[${ITER}+1])
    exten => dstring,n,GotoIf($[${ITER}<=${LOOPCNT}]?begin)
    exten => dstring,n,ExecIf($["${DSTRING:-1}"!="&"]?Return())
    exten => dstring,n,Set(DSTRING=${DSTRING:0:$[${LEN(${DSTRING})}-1]})
    exten => dstring,n,Return()
    
    exten => dlocal,1,Set(DSTRING=${IF($["${ARG1}"=""]?${DEXTEN:0:${MATH(${LEN(${DEXTEN})}-1,int)}}:Local/${DEXTEN:0:${MATH(${LEN(${DEXTEN})}-1,int)}}@from-internal/n)})
    exten => dlocal,n,Set(USEGOTO=${IF($["${ARG1}"=""]?1:0)})
    exten => dlocal,n,Return()
    
    exten => zap2dahdi,1,ExecIf($["${THISDIAL}" = ""]?Return())
    exten => zap2dahdi,n,Set(NEWDIAL=)
    exten => zap2dahdi,n,Set(LOOPCNT2=${FIELDQTY(THISDIAL,&)})
    exten => zap2dahdi,n,Set(ITER2=1)
    exten => zap2dahdi,n(begin2),Set(THISPART2=${CUT(THISDIAL,&,${ITER2})})
    exten => zap2dahdi,n,ExecIf($["${THISPART2:0:3}" = "ZAP"]?Set(THISPART2=DAHDI${THISPART2:3}))
    exten => zap2dahdi,n,Set(NEWDIAL=${NEWDIAL}${THISPART2}&)
    exten => zap2dahdi,n,Set(ITER2=$[${ITER2} + 1])
    exten => zap2dahdi,n,GotoIf($[${ITER2} <= ${LOOPCNT2}]?begin2)
    exten => zap2dahdi,n,Set(THISDIAL=${NEWDIAL:0:$[${LEN(${NEWDIAL})}-1]})
    exten => zap2dahdi,n,Return()
    
    exten => s-TORTURE,1,Goto(app-blackhole,musiconhold,1)
    exten => s-TORTURE,n,Macro(hangupcall,)
    
    exten => s-DONTCALL,1,Answer
    exten => s-DONTCALL,n,Wait(1)
    exten => s-DONTCALL,n,Zapateller()
    exten => s-DONTCALL,n,Playback(ss-noservice)
    exten => s-DONTCALL,n,Macro(hangupcall,)
    
    exten => s-CHANUNAVAIL,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM})
    exten => s-CHANUNAVAIL,n,ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup())
    exten => s-CHANUNAVAIL,n,Return()
    
    exten => s-NOANSWER,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM})
    exten => s-NOANSWER,n,ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup())
    exten => s-NOANSWER,n,Return()
    
    exten => s-BUSY,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM})
    exten => s-BUSY,n,ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup())
    exten => s-BUSY,n,Return()
    
    ;--== end of [macro-dial-one] ==--;

  9. #9
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    υποθέτω ότι το παραπάνω το ρίχνω στο extensions.conf στο τέλος.
    πως το περνάω στο dialplan μου?
    το extensions.conf μου έχει το εξής.
    Κώδικας:
    [DefaultPlan]
    exten => _XXXXXXXXXX,1,Dial(SIP/VoipGate/${EXTEN},120,Tt)
    exten => _XXXXXXXXXX,1,Busy()
    
    exten => _4XX,2,Answer()
    exten => _4XX,3,VoiceMail(${EXTEN}@Office,su)
    exten => _4XX,4,HangUp()
    exten => _4XX,102,Answer()
    exten => _4XX,103,VoiceMail(${EXTEN}@Office,sb)
    exten => _4XX,104,HangUp(
    )

  10. #10
    Το avatar του μέλους kronos911
    kronos911 Guest
    Ναι στο τέλος του extensions.conf τα βάζεις. Στο context των εσωτερικών θα πρέπει να βάλεις τις παρακάτω γραμμές στην αρχή του

    Κώδικας:
    include => app-callwaiting-cwoff
    include => app-callwaiting-cwon
    Τα δυο πρώτα (app-callwaiting-cwoff, app-callwaiting-cwon) όπως είναι. Το τρίτο (macro-dial-one) είναι παράδειγμα πώς κατά την διαδικασία dial κρίνεις αν έχει η όχι call waiting ενεργό.

  11. #11
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    μου έχει σπάσει τα νεύρα. τι έχω κάνει μέχρι τώρα:
    Στο
    Κώδικας:
    extensions.conf
    έχω ρίξει στο τέλος το
    Κώδικας:
    [app-callwaiting-cwoff]
    include => app-callwaiting-cwoff-custom
    exten => *71,1,Macro(user-callerid,)
    exten => *71,n,Set(CONNECTEDLINE(name-charset,i)=utf8)
    exten => *71,n,Set(CONNECTEDLINE(name,i)=Call Waiting: OFF)
    exten => *71,n,Set(CONNECTEDLINE(num,i)=${AMPUSER})
    exten => *71,n,Answer
    exten => *71,n,Wait(1)
    exten => *71,n,Noop(Deleting: CW/${AMPUSER} ${DB_DELETE(CW/${AMPUSER})})
    exten => *71,n(hook_1),Playback(call-waiting&de-activated)
    exten => *71,n,Macro(hangupcall,)
    
    ;--== end of [app-callwaiting-cwoff] ==--;
    
    
    [app-callwaiting-cwon]
    include => app-callwaiting-cwon-custom
    exten => *70,1,Macro(user-callerid,)
    exten => *70,n,Set(CONNECTEDLINE(name-charset,i)=utf8)
    exten => *70,n,Set(CONNECTEDLINE(name,i)=Call Waiting: ON)
    exten => *70,n,Set(CONNECTEDLINE(num,i)=${AMPUSER})
    exten => *70,n,Answer
    exten => *70,n,Wait(1)
    exten => *70,n,Set(DB(CW/${AMPUSER})=ENABLED)
    exten => *70,n(hook_1),Playback(call-waiting&activated)
    exten => *70,n,Macro(hangupcall,)
    
    ;--== end of [app-callwaiting-cwon] ==--;
    στην αρχή του
    Κώδικας:
    extensions.conf
    και έριξα στο
    Κώδικας:
    [Default]
    include => app-callwaiting-cwoff
    include => app-callwaiting-cwon
    πάω από το softphone (zoiper) και πληκτρολογώ *70, προσπαθεί για 2 δευτερόλεπτα να κάνει κλήση και κλείνει την γραμμή.

  12. #12
    Το avatar του μέλους kronos911
    kronos911 Guest
    Ρίξε και αυτά μέσα στο extensions.conf στο τέλος

    Spoiler:
    Κώδικας:
    [macro-user-callerid]
    include => macro-user-callerid-custom
    exten => lang-playback,1,GosubIf($[${DIALPLAN_EXISTS(macro-user-callerid,${CHANNEL(language)})}]?macro-user-callerid,${CHANNEL(language)},${ARG1}():macro-user-callerid,en,${ARG1}())
    exten => lang-playback,n,Return()
    
    exten => s,1,Set(TOUCH_MONITOR=${UNIQUEID})
    exten => s,n,Set(AMPUSER=${IF($["${AMPUSER}" = ""]?${CALLERID(number)}:${AMPUSER})})
    exten => s,n,GotoIf($["${CUT(CHANNEL,@,2):5:5}"="queue" | ${LEN(${AMPUSERCIDNAME})}]?report)
    exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))
    exten => s,n,Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)})
    exten => s,n,GotoIf($["${AMPUSER}" = "none"]?limit)
    exten => s,n,Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)})
    exten => s,n,GotoIf($["${AMPUSERCIDNAME:1:2}" = ""]?report)
    exten => s,n,Set(AMPUSERCID=${IF($["${ARG2}" != "EXTERNAL" & "${DB_EXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DB_RESULT}:${AMPUSER})})
    exten => s,n,Set(__DIAL_OPTIONS=${IF($["${DB_EXISTS(AMPUSER/${AMPUSER}/dialopts)}" = "1"]?${DB_RESULT}:${DIAL_OPTIONS})})
    exten => s,n,Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>)
    exten => s,n,GotoIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})} & ${DB_EXISTS(AMPUSER/${AMPUSER}/concurrency_limit)} & ${DB(AMPUSER/${AMPUSER}/concurrency_limit)}>0 & ${GROUP_COUNT(${AMPUSER}@concurrency_limit)}>=${DB(AMPUSER/${AMPUSER}/concurrency_limit)}]?limit)
    exten => s,n,ExecIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})}]?Set(GROUP(concurrency_limit)=${AMPUSER}))
    exten => s,n(report),Noop(Macro Depth is ${MACRO_DEPTH})
    exten => s,n,GotoIf($["${MACRO_DEPTH}" = "" | ${MACRO_DEPTH} < 6 ]?report2:macroerror)
    exten => s,n(report2),GotoIf($[ "${ARG1}" = "SKIPTTL" | "${ARG1}" = "LIMIT" ]?continue)
    exten => s,n(report3),Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])})
    exten => s,n,GotoIf($[ ${TTL} > 0 ]?continue)
    exten => s,n,Wait(${RINGTIMER})
    exten => s,n,Answer
    exten => s,n,Wait(1)
    exten => s,n,Gosub(macro-user-callerid,lang-playback,1(hook_0))
    exten => s,n,Macro(hangupcall,)
    exten => s,n(macroerror),Noop(Macro Limit Reached. Aborting Call)
    exten => s,n,Answer
    exten => s,n,Wait(1)
    exten => s,n,Gosub(macro-user-callerid,lang-playback,1(hook_2))
    exten => s,n,Macro(hangupcall,)
    exten => s,n(limit),Answer
    exten => s,n,Wait(1)
    exten => s,n,Gosub(macro-user-callerid,lang-playback,1(hook_1))
    exten => s,n,Macro(hangupcall,)
    exten => s,n,Congestion(20)
    exten => s,n(continue),Set(CALLERID(number)=${CALLERID(number):0:40})
    exten => s,n,Set(CALLERID(name)=${CALLERID(name):0:40})
    exten => s,n,GotoIf($["${CALLERID(name)}" = ""]?cnum)
    exten => s,n,Set(CDR(cnam)=${CALLERID(name)})
    exten => s,n(cnum),Set(CDR(cnum)=${CALLERID(num)})
    exten => s,n,Set(CHANNEL(language)=${MASTER_CHANNEL(CHANNEL(language))})
    
    exten => h,1,Macro(hangupcall,)
    
    exten => en,1(hook_0),Playback(im-sorry&an-error-has-occurred&with&call-forwarding)
    exten => en,n,Return()
    exten => en,n(hook_1),Playback(beep&im-sorry&your&simul-call-limit-reached&goodbye)
    exten => en,n,Return()
    exten => en,n(hook_2),Playback(im-sorry&an-error-has-occurred)
    exten => en,n,Return()
    
    ;--== end of [macro-user-callerid] ==--;
    
    [macro-hangupcall]
    include => macro-hangupcall-custom
    exten => s,1(start),GotoIf($["${USE_CONFIRMATION}"="" | "${RINGGROUP_INDEX}"="" | "${CHANNEL}"!="${UNIQCHAN}"]?theend)
    exten => s,n(delrgi),Noop(Deleting: RG/${RINGGROUP_INDEX}/${CHANNEL} ${DB_DELETE(RG/${RINGGROUP_INDEX}/${CHANNEL})})
    exten => s,n(theend),ExecIf($["${ONETOUCH_RECFILE}"!="" & "${CDR(recordingfile)}"=""]?Set(CDR(recordingfile)=${ONETOUCH_RECFILE}))
    exten => s,n,Hangup
    exten => s,n,MacroExit()
    
    ;--== end of [macro-hangupcall] ==--;

  13. #13
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    επανέρχομαι γιατί δεν βρήκα άκρη.

  14. #14
    Εγγραφή
    11-09-2017
    Μηνύματα
    1.638
    Downloads
    1
    Uploads
    0
    ISP
    None
    Αφαίρεσε τα παραπάνω που σου πρότειναν.
    Βάλε μέσα στο dialplan το παρακάτω κομμάτι

    exten => 456,1,Set(DB(test/count)=1)
    exten => 456,n,Set(COUNT=${DB(test/count)})
    exten => 456,n,Νoop(${COUNT})

    και μετά καλέσε από ένα εσωτερικό σου το 456.

    Δημοσίευσε τι σου βγάζει στο cli.

    Επίσης κάνε την εξής δοκιμή, κάλεσε μία από τις voip συσκευές που έχεις, απάντα και την ώρα που "μιλάς" με το άλλο εσωτερικό κάλεσε από ένα τρίτο εσωτερικό πάλι την voip συσκευή και πες μας τι γίνεται.

  15. #15
    Εγγραφή
    04-04-2012
    Μηνύματα
    1.511
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    Router
    Fritz 7270, Mikrotik x86
    Παράθεση Αρχικό μήνυμα από astbox Εμφάνιση μηνυμάτων
    Αφαίρεσε τα παραπάνω που σου πρότειναν.
    Βάλε μέσα στο dialplan το παρακάτω κομμάτι

    exten => 456,1,Set(DB(test/count)=1)
    exten => 456,n,Set(COUNT=${DB(test/count)})
    exten => 456,n,Νoop(${COUNT})

    και μετά καλέσε από ένα εσωτερικό σου το 456.

    Δημοσίευσε τι σου βγάζει στο cli.

    Επίσης κάνε την εξής δοκιμή, κάλεσε μία από τις voip συσκευές που έχεις, απάντα και την ώρα που "μιλάς" με το άλλο εσωτερικό κάλεσε από ένα τρίτο εσωτερικό πάλι την voip συσκευή και πες μας τι γίνεται.

    στο extensions.conf έβαλα τον παραπάνω κώδικα και τώρα είναι ως εξής:
    Κώδικας:
    [globals]
    
    [default]
    exten => _X!,1,Congestion()
    
    
    [AllCalls]
    exten => _X!,1,GoTo(DefaultPlan,${EXTEN},1)
    exten => _X!,2,Busy(3)
    
    exten => 600,1,Answer()
    exten => 600,2,Dial(SIP/600,60)
    exten => 600,3,Playback(vm-nobodyavail)
    exten => 600,4,VoiceMail(600@main)
    exten => 600,5,Hangup()
    
    
    exten => 601,1,Answer()
    exten => 601,2,Dial(SIP/601,60)
    exten => 601,3,Playback(vm-nobodyavail)
    exten => 601,4,VoiceMail(601@main)
    exten => 601,5,Hangup()
    
    
    exten => 602,1,Answer()
    exten => 602,2,Dial(SIP/602,60)
    exten => 602,3,Playback(vm-nobodyavail)
    exten => 602,4,VoiceMail(602@main)
    exten => 602,5,Hangup()
    
    
    exten => 603,1,Answer()
    exten => 603,2,Dial(SIP/603,60)
    exten => 603,3,Playback(vm-nobodyavail)
    exten => 603,4,VoiceMail(603@main)
    exten => 603,5,Hangup()
    
    [DefaultPlan]
    
    exten=> _5XX,1,dial(SIP/AstA/${EXTEN}, 60)
    exten=> _3XXX.,1,dial(SIP/AstA/0${EXTEN:1}, 60)   ;me 3 vgazo exoteriki apo to trunk tou AstA poy vgazei me 0 ekei.
    exten=> _4XXX.,1,dial(SIP/AstA/0${EXTEN:1}, 60)   ;me 4 vgazo exoteriki apo to trunk tou AstA poy vgazei me 9 ekei.
    
    exten => _0X.,1,Dial(SIP/CYTA/${EXTEN:1},120,KT)
    exten => _0X.,n,Busy()
    
    exten => _9X.,1,Dial(SIP/HOL/${EXTEN:1},120,KT)
    exten => _9X.,n,Busy()
    
    
    
    
    ;Test call waiting
    exten => 656,1,Set(DB(test/count)=1)
    exten => 656,n,Set(COUNT=${DB(test/count)})
    exten => 656,n,Νoop(${COUNT})
    
    
    
    
    exten => _*XXX,1,Answer()
    exten => _*XXX,2,Hangup()
    
    
    exten => 699,1,VoiceMailMain(@Office)
    exten => 699,2,HangUp()
    
    exten => voicemail,1,VoiceMailMain(${CALLERID(num)}@Office)
    exten => voicemail,2,HangUp()
    
    [DialIn]
    exten => _6XX,1,Dial(SIP/${EXTEN},15,Tr)

    όταν καλώ απευθείας το νούμερο 656 τότε έχω:
    Κώδικας:
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
        -- Executing [656@AllCalls:1] Goto("SIP/603-00000009", "DefaultPlan,656,1") in new stack
        -- Goto (DefaultPlan,656,1)
        -- Executing [656@DefaultPlan:1] Set("SIP/603-00000009", "DB(test/count)=1") in new stack
    [Feb 28 09:53:43] WARNING[1104][C-00000005]: func_db.c:180 function_db_write: DB: Error writing value to database.
        -- Executing [656@DefaultPlan:2] Set("SIP/603-00000009", "COUNT=") in new stack
    [Feb 28 09:53:43] WARNING[1104][C-00000005]: pbx.c:4869 pbx_extension_helper: No application 'Νoop' for extension (DefaultPlan, 656, 3)
      == Spawn extension (DefaultPlan, 656, 3) exited non-zero on 'SIP/603-00000009'
    AstB*CLI>

    αν το 602 καλέσει το 600 και ενώ μιλάνε τους καλέσει το 603:
    Κώδικας:
    AstB*CLI> sip show peers
    Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description            
    600/600                   192.168.1.97                             D  Yes        Yes            5060     OK (13 ms)                         
    601/601                   192.168.1.98                             D  Yes        Yes            5060     OK (13 ms)                         
    602/602                   192.168.1.99                             D  Yes        Yes            5060     OK (13 ms)                         
    603/603                   192.168.1.151                            D  Yes        Yes            33079    OK (6 ms)                          
    604                       (Unspecified)                            D  Yes        Yes            0        UNKNOWN                            
    AstB/ast                  192.168.1.72                                Yes        Yes            5060     OK (1 ms)                          
    AstB*CLI>
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
        -- Executing [600@AllCalls:1] Answer("SIP/602-00000010", "") in new stack
        -- Executing [600@AllCalls:2] Dial("SIP/602-00000010", "SIP/600,60") in new stack
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
        -- Called SIP/600
        -- SIP/600-00000011 is ringing
        -- SIP/600-00000011 answered SIP/602-00000010
        -- Remotely bridging SIP/602-00000010 and SIP/600-00000011
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
        -- Executing [600@AllCalls:1] Answer("SIP/603-00000012", "") in new stack
    [Feb 28 10:00:41] NOTICE[1112][C-0000000c]: res_rtp_asterisk.c:4685 ast_rtp_read: Unknown RTP codec 95 received from '192.168.1.151:46720'
        -- Executing [600@AllCalls:2] Dial("SIP/603-00000012", "SIP/600,60") in new stack
      == Using SIP RTP TOS bits 184
      == Using SIP RTP CoS mark 5
        -- Called SIP/600
    [Feb 28 10:00:41] NOTICE[1112][C-0000000c]: channel.c:4301 __ast_read: Dropping incompatible voice frame on SIP/603-00000012 of format ulaw since our native format has changed to (gsm)
        -- SIP/600-00000013 is ringing
        -- Started music on hold, class 'default', on SIP/602-00000010
        -- SIP/600-00000013 answered SIP/603-00000012
        -- Remotely bridging SIP/603-00000012 and SIP/600-00000013
        -- Stopped music on hold on SIP/602-00000010
      == Spawn extension (AllCalls, 600, 2) exited non-zero on 'SIP/602-00000010'
      == Spawn

    τα εσωτερικά μου είναι 600-602 Grandstream IP phones, 603 Zoiper softphone.

Σελ. 1 από 3 123 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Μηνύματα: 84
    Τελευταίο Μήνυμα: 12-08-21, 02:00
  2. Μηνύματα: 229
    Τελευταίο Μήνυμα: 29-03-19, 16:46
  3. Elastix call Recordings
    Από mazout στο φόρουμ Voice over IP (VoIP) Software
    Μηνύματα: 4
    Τελευταίο Μήνυμα: 17-05-17, 09:51

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας