If all you want to do is cause Asterisk to connect two extensions together at a time in the future, this "trick" is optimal (doesn't require scripting, etc.). All you have to do is create a .call file and tweak the timestamp on it. Asterisk will ignore the call file until the date/time set on the file is reached.
If you create an extension which plays a specific sound file whenever anyone connects to it (e.g., "good morning, this is your wake up call"), you can have Asterisk play that sound file by connecting that extension to the recipient's phone at a specific date/time.
Example call file:
Channel: Local/201 Callerid: 201 MaxRetries: 10 RetryTime: 5 WaitTime: 20 Context: default Extension: 1703
To "install" the .call file, create it in a regular directory, set the timestamp on it, and move it into /var/spool/asterisk/outgoing. Use the "touch" command to set the timestamp. Example syntax:
touch -t 200906202106 my.call
The format for the timestamp is YYYYMMDDHHmm where:
Y = Year digit M = Month digit D = Day digit H = Hour digit m = Minute digit
See the man page for "touch" for more into.
Source: VoIP Info Wiki