How to create an echo canceler

I’m new to asterisk and have been trying to learn some of the programing in the extension_custom.conf file

What I would like to do is to create an page echo canceler.

I’m able to record the message for the page, and I can get asterisk to call the page port (my extension for testing), but once I answer the ringing call, asterisk hangs up.

If the calling party stays on the line, I do get the recorded message to playback:
exten=> s,n,Dail(sip/124,A(/tmp/Page-Msg))

So, what I need to know is how to get asterisk to orginate a call without a calling party and be able to play back a recored message.

exten=> 5678,1,Goto(Page-Recorder,s,1) ;User dials 5678 to record a page message

[Page-Recorder]
exten => s,1,Answer()
exten => s,n,Wait(2)
;record page announcment
exten => s,n,Record(/tmp/Page-Msg:gsm)

;after caller hangs up, jump here to call the page port and playback announment
exten => h,1,Dial(sip/124,A(/tmp/page-recording))
exten => h,n,Hangup()

TIA for any help,
Ira