H extensions dosn't work in Asterisk

After Dial dosn’t work h extensions
[macro-db]
exten => s,1,MYSQL(Connect connid ${host} ${username} ${password} ${db})
exten => s,n,MYSQL(Query resultid ${connid} SELECT mask, user_id, trunk2 FROM user_numbers WHERE number=’${DID}’ AND user_id IS NOT $
exten => s,n,MYSQL(Fetch fetchid ${resultid} mask user_id trunk)
exten => s,n,GotoIf($["${user_id}" = “”]?endConnect)
exten => s,n,Set(fname=${STRFTIME(${EPOCH},%Y%m%d%H%M)}-${CALLERID(number)}-${DID})
exten => s,n,Set(callstart=${STRFTIME(${EPOCH},%Y%m%d%H%M)})
exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO user_calls SET user_id=’${user_id}’, user_number=’${DID}’, user_mask=’${mask$
exten => s,n(endConnect),MYSQL(clear ${resultid})
exten => s,n,MYSQL(disconnect ${connid})
exten => s,n,MixMonitor(/home/kazkad/records/MP3/${fname}.wav)
exten => s,n,GotoIf($["${user_id}" = “”]?endCall)
exten => s,n,Dial(SIP/${trunk}/${mask},)
exten => s,n,Hangup()
exten => h,1,MYSQL(Connect connid ${host} ${username} ${password} ${db})
exten => h,n,MYSQL(Query resultid ${connid} SELECT MAX(id) as id FROM user_calls WHERE user_number=’${DID}’)
exten => h,n,MYSQL(Fetch fetchid ${resultid} id)
exten => h,n,Set(callend=${STRFTIME(${EPOCH},%Y%m%d%H%M)})
exten => h,n,MYSQL(Query resultid ${connid} UPDATE user_calls SET end=’${callend}’, status=’${DIALSTATUS}’ WHERE id=’${id}’)
exten => h,n,MYSQL(clear ${resultid})
exten => h,n,MYSQL(disconnect ${connid})
exten => h,n(endCall),Hangup()

Thanks

h is run in the current subroutine context, not the macro context. (Might even be the top level context.)

Macros have been deprecated for a long time.

Hangup has nothing to hang up, as it has already gone.

[default]
exten => s,1,Answer()

[trunk1]
exten => _X.,1,Answer()
exten => _X.,n,Set(DID=${EXTEN})
exten => _X.,n,GotoIf($["${DID}" = “3550240”]?kazkad:client)
exten => _X.,n(kazkad),Dial(SIP/100)
;exten => _X.,n(client),Macro(db,${EXTEN,1})
exten => _X.,n(client),MYSQL(Connect connid ${host} ${username} ${password} ${db})
exten => _X.,n,MYSQL(Query resultid ${connid} SELECT mask, user_id, trunk2 FROM user_numbers WHERE number=’${DID}’ AND user_id IS NOT NULL)
exten => _X.,n,MYSQL(Fetch fetchid ${resultid} mask user_id trunk)
exten => _X.,n,GotoIf($["${user_id}" = “”]?endConnect)
exten => _X.,n,Set(fname=${STRFTIME(${EPOCH},%Y%m%d%H%M)}-${CALLERID(number)}-${DID})
exten => _X.,n,Set(callstart=${STRFTIME(${EPOCH},%Y%m%d%H%M)})
exten => _X.,n,MYSQL(Query resultid ${connid} INSERT INTO user_calls SET user_id=’${user_id}’, user_number=’${DID}’, user_mask=’${mask}’, client_number=’${CALLERID(number$
exten => _X.,n(endConnect),MYSQL(clear ${resultid})
exten => _X.,n,MYSQL(disconnect ${connid})
exten => _X.,n,NoOp(${DIALSTATUS})
exten => _X.,n,NoOp(Ext:‘qwwejjkjljkljkljkl’)
exten => _X.,n,MixMonitor(/home/kazkad/records/MP3/${fname}.wav)
exten => _X.,n,GotoIf($["${user_id}" = “”]?endCall)
exten => _X.,n,Dial(SIP/${trunk}/${mask},g)
exten => h,1,MYSQL(Connect connid ${host} ${username} ${password} ${db})
exten => h,n,MYSQL(Query resultid ${connid} SELECT MAX(id) as id FROM user_calls WHERE user_number=’${DID}’)
exten => h,n,MYSQL(Fetch fetchid ${resultid} id)
exten => h,n,Set(callend=${STRFTIME(${EPOCH},%Y%m%d%H%M)})
exten => h,n,MYSQL(Query resultid ${connid} UPDATE user_calls SET end=’${callend}’, status=’${DIALSTATUS}’ WHERE id=’${id}’)
exten => h,n,MYSQL(clear ${resultid})
exten => h,n,MYSQL(disconnect ${connid})
exten => h,n(endCall),Hangup()

It’s dosn’t work in current context

Your Dial application is unreachable because you have a non-matching extension pattern taking up a priority number meaning that it will “auto fallthrough” after the MixMonitor line.

If that is an obfuscation error, please provide logs at at least verbosity 5.