Generate notifikasi di asterisk

Dear all,

Mungkin ada yg sdh pegalaman dan sudah berhasil

Flow.infranya seperti ini

Sofphone --asterisk client (A)-- mera/vos – asterisk B --telco operator – hp customer

Ketika saya call dr softpho nmr customer dan nmr yg dituju tidak dapat dihubungi, harusnya kan ada notifikasi. Misalnya nmr yg anda tuju sedang dialihkan atau tidak aktif.

Bagaimana cayanya dI asterisk mengenerate notifikasi tersebut tanla merubah hangupcause code dan dialstatuanya disisi asterisk client?

Saya sdh cb tangkap cause codenya di asterisk B, ketika.ketemu cause code mis 17 kemudian saya play busy,.namun.disisi aaterisk client cause.codenya jadi 16 dan dialstatusnya jadi answer.

Harusnya tetap 17 dan.dialstatusnya busy.

Thanks

Kalau dilihat dari topologinya memang benar status code pada asterisk client(A) adalah 16 dikarenakan tidak ada status gagal pada sisi Asterisk Client (A) sedangkan status hangnya semestinya hanya ada di asterisk B, kalau seperti itu caranya maka akan hangupclose di asterisk client (A). Mengapa tidak diganti saja asterisk (B) dgn gateway jadi status yang didapat dari Gateway (Pengganti Asterisk B) akan sama ke Asterisk Client (A).

Hmmm…

Kasusnya seperti yg saya sampaikan diatas, bkn mengganti2 dengan gateway lain. Kalau sdh lama di asterisk plain mestinya paham kasus diatas…

Thanks

oh ya maaf saya ga nyimak secara serius, kalau memang seperti jadinya ada beberapa hal yang ingin saya tanyakan mengenai kondisi di sana untuk koneksinya :slight_smile

  1. Koneksi gateway dari Asterisk B ke telco operator dgn Apa ? IP, Gateway device IP to FXO atau IP to E1?
  2. konfigurasi extension incoming call di Asterisk B dari Asterisk A (Client) seperti apa?
  3. Asterisk yang digunakan di Sisi Client itu dgn Distro Asterisk atau Plain Asterisk, dan yg B dgn distro atau Plain asterisk?
  4. antara asterisk A (Client) ke B itu call by on request atau handshake sebelumnya?

Terimakasih :slight_smile:

  1. Koneksi gateway dari Asterisk B ke telco operator dgn Apa ? IP, Gateway device IP to FXO atau IP to E1?

Koneksi via SIP TRUNK

  1. konfigurasi extension incoming call di Asterisk B dari Asterisk A (Client) seperti apa?

ASTERISK-A ---------SIP TRUNK----------> SOFTWITCH (MERA/VOS) ------------SIP TRUNK-----------> ASTERISK-B -----SIP TRUNK----> TELCO OPERATOR

CONFIG TRUNK ASTERISK B
[FROM_MERA_VOS]
fromdomain=IP_VOS_MERA
host==IP_VOS_MERA
disallow=all
allow=ulaw
allow=alaw
qualify=yes
context=from-vos-mera
type=peer
insecure=port,invite
nat=yes
canreinvite=no
trustrpid=yes
sendrpid=yes

CONFIG TRUNK ASTERISK A
[TO_MERA_VOS]
fromdomain=IP_VOS_MERA
host==IP_VOS_MERA
disallow=all
allow=ulaw
allow=alaw
qualify=yes
context=to_mera_vos
type=peer
insecure=port,invite
nat=yes
canreinvite=no
trustrpid=yes
sendrpid=yes

  1. Asterisk yang digunakan di Sisi Client itu dgn Distro Asterisk atau Plain Asterisk, dan yg B dgn distro atau Plain asterisk?

Asterisk A dan B , asterisk plain (1.8)

  1. antara asterisk A (Client) ke B itu call by on request atau handshake sebelumnya?

Call by request

Thanks

Kalau saya baca dari SIP Trunk Configurasi sudah benar baik dari Asterisk A ataupun B hanya bridging diantara keduanya yaitu Softswitch Mera / Vos ini? Boleh tahu Mera ini Softswitch di sisi anda atau vendor?
Sebab DialStatus dari Kedua asterisk sudah di open oleh SIP trunknya qualify=yes cuma yg dikirim bukan extension config yang ini sip config jadi saya belum tahu config incoming call extensionnya.:slight_smile:

Mera or vos kami manage sendiri.

Untuk apa.context.incoming, ini kan hanya outbound call.

Thanks

Baik ga usah deh extensionya , berarti ada bridging antara Asterisk A dan Asterisk B, yaitu softswitch mera/vos kalau didiagnosa asterisk B sudah memberikan notofikasi hangupclose code tapi di renotifikasi oleh softswitch Mera dgn code berbeda , mungkin ini saran saya :slight_smile:

  1. dibuatkan config baru di asterisk B untuk incoming from Asterisk A dan dilakukan outbound call dari softphone yang ke asterisk A dan peer to peer ke asterisk B dan dilihat apakah notifikasinya sama atau berbeda.
  2. kalau sama maka reconfigure kembali softswitch mera ./ vos nya ( setting kembali ) berarti penyebabnya adalah di softswitchnya.

Itu aja
Thanks

Saya blm mendapatkan jawaban yang pas, mungin karna pertanyaan saya mungkin kurang dipahami atau kurang detail menuliskannya.

Kita rubah aja flownya

extension/softphone ----SIP REGISTER—> asterisk client (A) -----SIP TRUNK----------> asterisk operator (B)----------SIP TRUNK —> SBC operator TSEL

ketika saya call nomor HP (GSM) terkadang tidak ada notifikasi dan kadang ada notifikasi, saya kurang tau apakah karna di sisi SBC operator terlalu overload sehingga tidak mengirimkan notifikasi or not.

Namun client saya kadang komplain, kenapa kadang2 tidak ada notif, ketika nomor yang di call sibuk, reject, atau invalid number.

Sehingga saya mau mengakalinya dengna membuat voice sendiri, dengan dialplan sbb dengan membuat voice sendiri dan memplay berdasakan return code (hangupcode) pada asterisk B

[dlpn-trunk]
exten => _X.,1,Set(CID_IS_ACTIVE=${AST_CID_IS_ACTIVE(${CALLERID(num)},${CALLERID(ani)})})
exten => _X.,n,ExecIf($[ “${CID_IS_ACTIVE}” = “N” ]?Hangup())
exten => _X.,n,Set(GROUP()=${CHANNEL(peername)})
exten => _X.,n,NoOp(CURRENT_CALL >> ${CHANNEL(peername)} = ${GROUP_COUNT(${CHANNEL(peername)})})
exten => _X.,n,ResetCDR()
exten => _X.,n,Set(CALLERID(all)=${CALLERID(num)})
exten => _X.,n,Set(CDR(caller_cid)=${CALLERID(num)})
exten => _X.,n,Set(CDR(channeltype)=${CHANNEL(channeltype)})
exten => _X.,n,Set(CDR(recvip)=${CHANNEL(recvip)})
exten => _X.,n,Set(CDR(peerip)=${CHANNEL(peerip)})
exten => _X.,n,Set(CDR(sip_from)=${CHANNEL(from)})
exten => _X.,n,Set(CDR(sip_uri)=${CHANNEL(uri)})
exten => _X.,n,Set(CDR(useragent)=${CHANNEL(useragent)})
exten => _X.,n,Set(CDR(peername)=${CHANNEL(peername)})
exten => _X.,n,Set(CDR(outcodec)=${CHANNEL(audionativeformat)})
exten => _X.,n,Set(HANGUP_SIDE=CALLER)
exten => _X.,n,Dial(${TRUNK}/${EXTEN},tTg)
exten => _X.,n,Set(HANGUP_SIDE=CALLED)
exten => _X.,n,ExecIf($["${HANGUPCAUSE}"=“21”]?Playback(busy_number)) ; CALL REJECTED
exten => _X.,n,ExecIf($["${HANGUPCAUSE}"=“17”]?Playback(busy_number)) ; BUSY
exten => _X.,n,ExecIf($["${HANGUPCAUSE}"=“1”]?Playback(invalid_number)) ; INVALID NUMBER
exten => _X.,n,ExecIf($["${HANGUPCAUSE}"=“28”]?Playback(invalid_number)) ; INVALID NUMBER
exten => _X.,n,ExecIf($["${HANGUPCAUSE}"=“19”]?Playback(invalid_number)) ; DILUAR AREA
exten => _X.,n,Hangup()

exten => h,1,ExecIf($[ “${ANSWEREDTIME}” = “” ]?Set(ANSWEREDTIME=0))
exten => h,n,Set(AST_UPDATE_DURATION()=${ANSWEREDTIME},${CALLERID(ani)})
exten => h,n,Set(CDR(hangupside)=${HANGUP_SIDE})
exten => h,n,NoOp(DIAL_STATUS ${CHANNEL(peername)} ${DIALSTATUS}, HANGUP_CAUSE=${HANGUPCAUSE} AND HANGUP_SIDE=${HANGUP_SIDE})
exten => h,n,ExecIf($["${HANGUPCAUSE}"=“21”]?Playback(busy_number)) ; CALL REJECTED
exten => h,n,ExecIf($["${HANGUPCAUSE}"=“17”]?Playback(busy_number)) ; BUSY
exten => h,n,ExecIf($["${HANGUPCAUSE}"=“1”]?Playback(invalid_number)) ; INVALID NUMBER
exten => h,n,ExecIf($["${HANGUPCAUSE}"=“28”]?Playback(invalid_number)) ; INVALID NUMBER
exten => h,n,ExecIf($["${HANGUPCAUSE}"=“19”]?Playback(invalid_number)) ; DILUAR AREA
exten => h,n,Hangup()

Contoh : hangupcause code 28 -> INVALID number

Ketika saya call nomor tertentu dan saya dapat response 28 dari SBC operator TSEL maka saya play voice (invalidnumber), seharusnya status yang didapat di asterisk A adalah 28 namun yang tercatat di asterisk A HANGUPCAUSE 16 (ANSWER) -> mungkin playvoice di sisi aserisk B dianggap sebagai answer.

Pertanyaannya, bagaimana mengirimkan status (28) ke sisi asterisk A + notifikasi /playvoice yang saya buat?

Thanks