[root@-:/etc/asterisk]# cat queues.conf
[agents-queue]
musicclass = default
strategy = ringall
timeout = 15
retry = 5
maxlen = 0
member => SIP/1690100
member => SIP/1690101
member => SIP/1690102
member => SIP/1690103
[root@-:/etc/asterisk]# cat sip.conf
[general]
bindport=6090
bindaddr=0.0.0.0
externip=52.66.68.62
localnet=172.31.35.0/20
nat=force_rport,comedia
srvlookup=no
udpbindaddr=0.0.0.0:6090
; ===== CRITICAL FIXES =====
qualify=yes
qualifyfreq=15 ; Reduced from 30 to 15 seconds
callcounter=yes
busylevel=1
notifyhold=yes ; Added
notifyringing=yes ; Added
session-timers=accept ; Added
session-expires=1800 ; Added
session-minse=90 ; Added
defaultexpiry=120 ; Added
minexpiry=60 ; Added
maxexpiry=3600 ; Added
; =========================
; Registration
register => 1690100:XXXXXXX@217.149.244.35:6090
[external-pbx]
type=peer
host=217.149.244.35
port=6090
username=1690100
secret=XXXXXXX
fromuser=1690100
fromdomain=217.149.244.35
context=from-trunk
insecure=invite,port
directmedia=no
canreinvite=no
nat=force_rport,comedia
disallow=all
allow=ulaw
qualify=yes
qualifyfreq=20 ; Reduced from 30 to 20
transport=udp
rtp_symmetric=yes
icesupport=no
[1690100]
type=friend
host=dynamic
secret=XXXXXX
context=from-internal
nat=force_rport,comedia
disallow=all
allow=ulaw,alaw
dtmfmode=rfc2833
canreinvite=no
qualify=yes
qualifyfreq=15 ; Reduced from 20 to 15
callcounter=yes
busylevel=1
call-limit=1 ; CRITICAL: Added call limit
[1690101]
type=friend
host=dynamic
secret=XXXXXXX
context=from-internal
nat=force_rport,comedia
disallow=all
allow=ulaw,alaw
dtmfmode=rfc2833
canreinvite=no
qualify=yes
qualifyfreq=15 ; Reduced from 20 to 15
callcounter=yes
busylevel=1
call-limit=1 ; CRITICAL: Added call limit
[1690102]
type=friend
host=dynamic
secret=XXXXX
context=from-internal
nat=force_rport,comedia
disallow=all
allow=ulaw,alaw
dtmfmode=rfc2833
canreinvite=no
qualify=yes
qualifyfreq=15 ; Reduced from 20 to 15
callcounter=yes
busylevel=1
call-limit=1 ; CRITICAL: Added call limit
[1690103]
type=friend
host=dynamic
secret=XXXXXXX
context=from-internal
nat=force_rport,comedia
disallow=all
allow=ulaw,alaw
dtmfmode=rfc2833
canreinvite=no
qualify=yes
qualifyfreq=15 ; Reduced from 20 to 15
callcounter=yes
busylevel=1
call-limit=1 ; CRITICAL: Added call limit
[root@-:/etc/asterisk]# cat extensions.conf
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp
TRUNK=SIP/external-pbx
[default]
exten => s,1,Hangup()
[from-trunk]
; Route specific DID numbers (e.g., +48222300490)
[from-trunk]
exten => +48222300490,1,NoOp(Incoming call for DID: ${EXTEN})
same => n,Set(MY_UID=${UNIQUEID})
same => n,Set(GLOBAL(CALLER_${MY_UID})=${CALLERID(num)})
same => n,Verbose(1,DEBUG: Stored CALLER_${MY_UID} = ${CALLERID(num)})
same => n,Set(__CALLER_UID=${MY_UID})
; queue with subroutine on pickup
same => n,Queue(agents-queue,60,agent-pickup)
same => n,Hangup()
; Fallback for other DIDs
exten => s,1,NoOp(Incoming call from trunk)
same => n,Goto(+48222300490,1) ; Route to main DID or modify as needed
; ===== AGENT PICKUP HANDLER =====
[agent-pickup]
exten => s,1,NoOp(Agent pickup handler started)
; Retrieve caller info from global variable
same => n,Set(MY_UID=${CALLER_UID})
same => n,Set(CALLER_NUM=${GLOBAL(CALLER_${MY_UID})})
same => n,Set(AGENT_ID=${CHANNEL(name)})
; Debug logging
same => n,Verbose(1,RAW VALUES - Caller: ${CALLER_NUM} Agent:${AGENT_ID} UniqueID:${MY_UID})
same => n,System(echo "$(date +'%Y-%m-%d %H:%M:%S') - Caller=${CALLER_NUM} Agent=${AGENT_ID}" >> /tmp/queue_debug.log)
; API call to external system (optional)
same => n,ExecIf($\["${CALLER_NUM}" != ""\]?System(curl --max-time 5 -X POST "[https://prod-autos.lider-ltd.pl/insert_ivr_user](https://prod-autos.lider-ltd.pl/insert_ivr_user)" -d "phone=${CALLER_NUM}&agent=${AGENT_ID}" >> /tmp/api_calls.log 2>&1))
same => n,Return()
[from-internal]
; ----- Polish Numbers -----
; Rule 1: Local 9-digit format (e.g., 788483116 → send as 788483116)
exten => _XXXXXXXXX,1,NoOp(Calling Polish local number: ${EXTEN})
same => n,NoOp(DEBUG: Sending raw 9-digit number: ${EXTEN}) ; Log the raw number
same => n,Dial(SIP/${EXTEN}@external-pbx,60,Tt) ; Send AS-IS (no prefix)
same => n,Hangup()
; Rule 2: E.164 format (+48XXXXXXXXX → strip +48, send raw 9 digits)
exten => _+48XXXXXXXXX,1,NoOp(Calling Poland E.164: ${EXTEN})
same => n,Set(OUTNUM=${EXTEN:3}) ; Remove “+48”, keep only the 9 digits
same => n,NoOp(DEBUG: Stripped +48, sending: ${OUTNUM})
same => n,Dial(SIP/${OUTNUM}@external-pbx,60,Tt)
same => n,Hangup()
; Rule 3: International format (0048XXXXXXXXX → strip 0048, send raw 9 digits)
exten => _0048XXXXXXXXX,1,NoOp(Calling Poland 0048 format: ${EXTEN})
same => n,Set(OUTNUM=${EXTEN:4}) ; Remove “0048”, keep only the 9 digits
same => n,NoOp(DEBUG: Stripped 0048, sending: ${OUTNUM})
same => n,Dial(SIP/${OUTNUM}@external-pbx,60,Tt)
same => n,Hangup()
; ----- Indian Numbers (Keep existing logic) -----
exten => _+91XXXXXXXXXX,1,NoOp(Calling India: ${EXTEN})
same => n,Dial(SIP/${EXTEN}@external-pbx,60,Tt) ; Send with +91
same => n,Hangup()
; Fallback for invalid numbers
exten => _X.,1,NoOp(Invalid number: ${EXTEN})
same => n,Playback(ss-noservice)
same => n,Hangup()
[root@-:/etc/asterisk]#
here is my configuration inside the files please let me know where I am missing?