function SendAMICommand($amiCmd, &$status = true) { global $sugar_config; $server = $sugar_config['asterisk_host']; $port = (int) $sugar_config['asterisk_port']; $Username = "******" . $sugar_config['asterisk_user'] . "\r\n"; $Secret = "Secret: " . $sugar_config['asterisk_secret'] . "\r\n"; $context = $sugar_config['asterisk_context']; $socket = fsockopen($server, $port, $errno, $errstr, 20); if (!$socket) { echo "couldn't connect ({$errno}): {$errstr} <br>\n"; } else { // log on to Asterisk fputs($socket, "Action: Login\r\n"); fputs($socket, $Username); fputs($socket, $Secret); fputs($socket, "\r\n"); $response = ReadResponse($socket); echo "Login Response: \n"; echo $response; $status = $status && WasAmiCmdSuccessful($response); if ($status) { fputs($socket, $amiCmd); $response = ReadResponse($socket); echo "\nAMI Comand Response: \n"; echo $response; $status = $status && WasAmiCmdSuccessful($response); fputs($socket, "Action: Logoff\r\n\r\n"); fputs($socket, "\r\n"); $response = ReadResponse($socket); echo "\nLogout Response: \n"; echo $response; // Don't really care if logoff was successful; //$status = $status && WasAmiCmdSuccessful( $response ); } sleep(1); fclose($socket); } }
// dial number fputs($socket, "Action: originate\r\n"); fputs($socket, "Channel: " . $channel . "\r\n"); fputs($socket, "Context: " . $context . "\r\n"); fputs($socket, "Exten: " . $number . "\r\n"); fputs($socket, "Priority: 1\r\n"); fputs($socket, "Callerid:" . $_REQUEST['phoneNr'] . "\r\n"); fputs($socket, "Account: CLICKTODIAL-" . formatPhoneNumberToE164($_REQUEST['phoneNr']) . "-" . $_REQUEST['module'] . "-" . $_REQUEST['contactId'] . "\r\n"); fputs($socket, "Variable: CALLERID(number)=" . $extension . "\r\n\r\n"); // You will not get an originate response unless you wait for the phone to be answered... so it's impractical to wait. // but, if there is a permission issue it will fail almost immediately with permission denied. $result = ReadResponse($socket, 10000000); echo "Originate Response: " . $result . "\n"; fputs($socket, "Action: Logoff\r\n\r\n"); fputs($socket, "\r\n"); $result = ReadResponse($socket); echo "Logout Response: " . $result; gitimg_log("click-to-dial"); //var_dump($result); //var_dump($channel); //var_dump($context); //var_dump($number); //sleep(1); // close socket fclose($socket); } /** * Read the socket response * * @param object $socket Socket * @param int $timeout in uS, default is 500000 (1/2 a second)