Weryfikacja numeru osoby dzwoniacej - przykład użycia IVR API

Wykorzystując możliwości, które stwarza usługa IVR API - nowość stworzyliśmy bardzo łatwo aplikację, której zadaniem jest wykonanie odpowiednich działań w zależności od numeru osoby dzwoniącej.

Aplikacja została stworzona w PHP, ale można użyć innego języka. Dane są przesyłane przez metodę POST protokołu HTTP. Parametry opisujące zapytanie znajdują się w polu „request“ i są one opakowane do formatu JSON.

Algorytm działania aplikacji jest następujący:

  • po połączeniu z IVR API weryfikowany jest numer A (osoby dzwoniącej),
  • jeśli numer A = 6161234567, to następuję połączenie z numerem 501234567,
  • w pozostałych przypadkach następuje automatyczne rozłączenie.

Poniżej znajduje się pełen kod PHP tej aplikacji.

				<?

					// włączamy logowanie błędów do pliku; należy odpowiednio samemu ustawić poprawną ścieżkę
					ini_set('log_errors', 'error_log');
					ini_set('error_log', '/tmp/plik-z-logami-php');
					ini_set('log_errors', 'On');
					ini_set('display_errors', 'Off');
					ini_set('error_reporting', E_ALL);


					// adres e-mail, na który będziemy wysyłać komunikaty błędów 
					define('ADMINISTRATOR_EMAIL', 'adres@email');

					function _error($text) {
					  header('HTTP/1.0 500 Blad\n');
       					  echo $text;
					}

					// jeśli PHP ma włączone magic_quotes, to musimy wyłuskać oryginalną wartość parametru $_POST["request"]
					if (get_magic_quotes_gpc())
						$_POST["request"] = stripslashes($_POST["request"]);

					$request = (array) json_decode($_POST["request"]);


					// jeśli nie otrzymaliśmy poprawnego zapytania - kończymy działanie
					if (!$request) {
						die("Blad - request jest pusty");
					}

					if ($request["Error"]) {
						mail(ADMINISTRATOR_EMAIL, '', var_export($request, TRUE));
						exit(0);
					}

					$response = array();

					if (!array_key_exists("Event", $request)) {
						_error("Blad - brak zdarzenia" . var_export($request, TRUE));
					}


					if (preg_match('/^(0|\+48|)6161234567$/', $request["FromNumber"])) {
						$response["Action"] = array("Type" => "CallExternalNumber", "Destination" => "501234567", "Options" => "PlayCallStatus,Timeout=10");
      
					}
					else {
						if ($request["ChannelStatus"] == "Ringing")
							$response["Action"] = array("Type" => "DontAnswer");

						else
							$response["Action"] = array("Type" => "Hangup");
					}

					// przechowywanie danych sesji pomiędzy wywołaniami
					$response["Session"] = (array) $request["Session"];

					echo json_encode($response);

				?>
			

projekt: difronte

[zamknij]

Ten serwis wykorzystuje pliki cookies. Zapoznaj się z naszą Polityką Prywatności.

[Zamknij i nie pokazuj więcej tego komunikatu]