twilio project revision

This commit is contained in:
2025-08-06 16:04:03 -07:00
parent c6edbbeba7
commit b5e091d845
3 changed files with 289 additions and 69 deletions

View File

@@ -1061,28 +1061,51 @@ class TWP_Webhooks {
* Handle outbound agent with from number webhook
*/
public function handle_outbound_agent_with_from($request) {
$params = $request->get_params();
$target_number = isset($params['target_number']) ? $params['target_number'] : '';
$from_number = isset($params['from_number']) ? $params['from_number'] : '';
$agent_call_sid = isset($params['CallSid']) ? $params['CallSid'] : '';
try {
$params = $request->get_params();
// Get parameters from query string or POST body
$target_number = $request->get_param('target_number') ?: '';
$from_number = $request->get_param('from_number') ?: '';
$agent_call_sid = $request->get_param('CallSid') ?: '';
// Log parameters for debugging
error_log('TWP Outbound Webhook - Target: ' . $target_number . ', From: ' . $from_number . ', CallSid: ' . $agent_call_sid);
error_log('TWP Outbound Webhook - All params: ' . print_r($params, true));
if ($target_number && $from_number) {
// Create TwiML to call the target number with the specified from number
$twiml = '<?xml version="1.0" encoding="UTF-8"?>';
$twiml .= '<Response>';
$twiml .= '<Say voice="alice">Connecting your outbound call...</Say>';
$twiml .= '<Dial callerId="' . esc_attr($from_number) . '" timeout="30">';
$twiml .= '<Number>' . esc_html($target_number) . '</Number>';
$twiml .= '</Dial>';
$twiml .= '<Say voice="alice">The number you called is not available. Please try again later.</Say>';
$twiml .= '</Response>';
return $this->send_twiml_response($twiml);
} else {
// Enhanced error message with debugging info
$error_msg = 'Unable to process outbound call.';
if (empty($target_number)) {
$error_msg .= ' Missing target number.';
}
if (empty($from_number)) {
$error_msg .= ' Missing from number.';
}
error_log('TWP Outbound Error: ' . $error_msg . ' Params: ' . json_encode($params));
$twiml = '<?xml version="1.0" encoding="UTF-8"?>';
$twiml .= '<Response><Say voice="alice">' . esc_html($error_msg) . '</Say><Hangup/></Response>';
return $this->send_twiml_response($twiml);
}
if ($target_number && $from_number) {
// Create TwiML to call the target number with the specified from number
$twiml = new \Twilio\TwiML\VoiceResponse();
$twiml->say('Connecting your outbound call...', ['voice' => 'alice']);
$dial = $twiml->dial([
'callerId' => $from_number, // Use the specified from number as caller ID
'timeout' => 30
]);
$dial->number($target_number);
// If no answer, leave a message
$twiml->say('The number you called is not available. Please try again later.', ['voice' => 'alice']);
return $this->send_twiml_response($twiml->asXML());
} else {
$twiml = '<Response><Say voice="alice">Unable to process outbound call.</Say><Hangup/></Response>';
} catch (Exception $e) {
error_log('TWP Outbound Webhook Exception: ' . $e->getMessage());
$twiml = '<?xml version="1.0" encoding="UTF-8"?>';
$twiml .= '<Response><Say voice="alice">Technical error occurred. Please try again.</Say><Hangup/></Response>';
return $this->send_twiml_response($twiml);
}
}