In order to add call waiting indications to the caller, I've modified macro-dial-one:
exten => s,n(godial),Dial(${DSTRING},${ARG1},${D_OPTIONS})
is replaced with
exten => s,n,GotoIf($["${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="NOT_INUSE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN"]?reallydial)
exten => s,n,Progress() ;; start progress
exten => s,n,Set(DSTRING=${DSTRING}&Local/s@keep-ringing) ;; update dialstring to prevent asterisk from ringing
exten => s,n,Playtones(callwaiting) ;; start playing callwaiting tones
exten => s,n(reallydial),Dial(${DSTRING},${ARG1},${D_OPTIONS})
exten => s,n,StopPlaytones()
additionally, I've added the section
[keep-ringing]
exten => s,1,Ringing()
exten => s,n,Wait(600)
exten => s,n,Hangup()
so the dial command could be appended with &Local/s@keep-rining and the progress tones will not be stopped by the Dial command.