I've been building in a call-transfer facility for a bridge line after callout, following the various hints given in the dev guide and here, and I have an attended transfer working fine:
@transferTarget = @phone::startAttendedTransfer($event.bridge_extension, "phrase", "Please wait", true) $transferConnectResult = @transferTarget::getConnectionStatus() IF ($transferConnectResult == "SUCCESS") @transferTarget::playDtmf($event.bridge_conf_id & "#") wait(1) @transferTarget::playDtmf($event.bridge_passcode & "#") $transferFinalResult = @phone::endAttendedTransfer() IF ($transferFinalResult == "SUCCESS") ...
(although that "please wait" doesn't repeat as it should [Q1])
I'm trying to account (close by in the same script) for cases where the event contains a bridge extension but no conference details, whereby I just make a blind transfer to the bridge and leave the user to enter the details:
@phone::play("dtmf", "123") # just a hint that this is a blind transfer $transferFinalResult = @phone::blindTransfer($event.bridge_extension) IF ($transferFinalResult == "SUCCESS") exit # we can no longer interact with recipient ELSE @phone::play("phrase", "Sorry, could not reach the other party")
but this seems to have problems. I get my progress hint above, but then the line goes dead and xMatters hangs up (process takes about 5 seconds). In the logs I see this:
[sipEngineManager-process-pool-thread-3] DEBUG - - Interpreter Runs: $transferFinalResult = @phone::blindTransfer($event.bridge_extension) [sipEngineManager-process-pool-thread-3] INFO - - PHONE_TRANSFER_IN_PROGRESS Event ID:200801 Notification ID:204718 [EventScannerThread] INFO - - A tag was in this dialog already. [EventScannerThread] INFO - - A tag was in this dialog already. [EventScannerThread] ERROR - - SIP error is signaled: error code: 404, error message: SIP/2.0 404 Not Found [sipEngineManager-process-pool-thread-3] INFO - - PHONE_TRANSFER_FAILED Event ID:200801 Notification ID:204718 ERROR [sipEngineManager-process-pool-thread-3] DEBUG - - Add script variable [script][transferfinalresult ['ERROR']] to repository [sipEngineManager-process-pool-thread-3] DEBUG - - Interpreter Runs: IF ($transferFinalResult == "SUCCESS")
What's going on with that? [Q2]
Actually I have a third question: how can I change the rate of DTMF played via @transferTarget::playDtmf() ? Transfers seem to be rather slow with longer passcodes (which isn't good when the on-hold phrase isn't repeating) and judging by the rate I hear DTMF when used in @phone::play() it's pretty pedestrian - maybe 1 per second? Most equipment can deal with much faster rates than that, especially on LANs.
Edited [17-Feb-2012]: Clarify question numbering