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:
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);
?>
ipfon - wszystkie prawa zastrzeżone
projekt: difronte
Ten serwis wykorzystuje pliki cookies. Zapoznaj się z naszą Polityką Prywatności.
[Zamknij i nie pokazuj więcej tego komunikatu]