Zegarynka - przykład użycia IVR API

Wykorzystując możliwości, które stwarza usługa IVR API - nowość stworzyliśmy bardzo łatwo zegarynkę - aplikację, której zadaniem jest podanie przez telefon aktualnej daty i godziny.

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.

Zegarynka dostępna jest pod numerem 616222612. Algorytm działania aplikacji jest następujący:

  • po połączeniu z numerem zegarynki odgrywany jest ustawiony w ipfon24 pod numerem 0 plik z zapowiedzią - powitanie,
  • następnie odgrywana jest aktualna data i godzina,
  • na końcu odtwarzana jest zapowiedz ustawiona w ipfon24 pod numerem 1 - pożegnanie.

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

				<?
					ini_set('log_errors', 'error_log');
					ini_set('error_log', '/tmp/php-error.log');
					ini_set('log_errors', 'On');
					ini_set('display_errors', 'Off');
					ini_set('error_reporting', E_ALL);
				
					// stany aplikacji
					define('STATE_CONNECTED', 1);
					define('STATE_PLAYED_POWITANIE', 2);
					define('STATE_PLAYED_TIME', 3);

					// zapowiedzi - przypisanie nazw zapowiedzi do 
					// odpowiednich plików ustawionych w ipfon24
					define('POWITANIE', 0);
					define('POZEGNANIE', 1);
					
					// adres, na ktory beda wysylane powiadomienia
					define('ADMINISTRATOR_EMAIL', 'admin@admin.pl');
					
					// sciezka do pliku logu
					define('LOG_FILENAME', '/tmp/app-log.txt');
					
					function _log($text)
					{
					  $mail_text = date('Y-m-d H:i:s ') . $text . "\n";
					  $f = fopen(LOG_FILENAME, "a+");
					  fwrite($f, $mail_text);
					  fclose($f);
					}
					
					_log("Polaczony");

					if (get_magic_quotes_gpc())
					$_POST["request"] = stripslashes($_POST["request"]);
					_log("Zawartosc zapytania: " . $_POST["request"]);

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

					$session = (array) $request["Session"];
					_log(var_export($request, TRUE));

					// w przypadku, gdy otrzymujemy komunikat o bledzie wysylamy
					// na e-mail powiadomienie i konczymy prace
					if (array_key_exists("Error", $request)) {
					  mail(ADMINISTRATOR_EMAIL, "Blad aplikacji", var_export($request, TRUE));
					}

					_log("Zawartosc sesji na poczatku: " . var_export($session, TRUE));
					$response = array();
					if (!$session["state"])
					$session["state"] = STATE_CONNECTED;
					_log("Stan: " . $session["state"]);
					
					$event = (array) $request["Event"];
					_log("Event: " . var_export($event, TRUE));
					
					switch ($session["state"])
					{
					  case STATE_CONNECTED:
					  	$response["Action"] = array("Type" => "Play", "Prompt" => POWITANIE);
						$session["state"] = STATE_PLAYED_POWITANIE;
						break;
	
					  case STATE_PLAYED_POWITANIE:
						$response["Action"] = array('Type' => 'SayDate', 'Format' => 'AHM',
						'Timestamp' => time());
						$session["state"] = STATE_PLAYED_TIME;
						break;
							
					  case STATE_PLAYED_TIME:
						$response["Action"] = array("Type" => "Play", "Prompt" => POZEGNANIE);
						$session["state"] = STATE_GOODBYE;
						break;
							
					  default:
						$response["Action"] = array('Type' => 'Hangup');
						_log("Nieznany stan?: " . $session["state"]);
						break;
					}
					_log("session: " . var_export($session, TRUE));
					$response["Session"] = $session;
					_log("response: " . var_export($response, TRUE));
					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]