Instrukcja programisty usługi "Zintegruj"
![]()
1. Usługa Zintegruj
2. Komunikacja Usługa sieciowa (WebService)→ Zintegruj
3. Komunikacja Zintegruj → Usługa sieciowa (WebService)
1. Usługa "Zintegruj"
Usługa Zintegruj cyklicznie wywołuje wskazaną w jej konfiguracji stronę WWW, przesyłając do niej informacje o naciśniętych przez osobę dzwoniącą przyciskach na klawiaturze telefonu oraz odczytując osobie dzwoniącej zwrócony tekst. Usługa pozwala także osobie dzwoniącej nagrać nagranie głosowe oraz zainicjować nowe połączenie telefoniczne na dowolny numer telefonu.
http://webservices.freeconet.pl/kalkulator.php
udostępniliśmy przykładową aplikację symulującą prosty kalkulator. Do jej prawidłowego działania niezbędne jest włączenie głosów Ewy i Jacka. Aby skorzystać z kalkulatora wpisz podany powyżej adres www w pole "Wywołaj aplikację spod adresu"
**** Działanie aplikacji Kalkulator można sprawdzić pod numerem +48 (58) 7311950 ****
2. Komunikacja USŁUGA SIECIOWA (WEBSERVICE) → ZINTEGRUJ
Usługa sieciowa komunikuje się z usługą Zintegruj poprzez plik XML zgodny ze standardem 1.0,
którego przykład jest następujący:
<?xml version="1.0" encoding="utf-8" ?>
<service_application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://webservices.freeconet.pl/Aplikacja.xsd">
<memory></memory>
<info>
<message type="TTS" voice="JAC" value="Witaj. To jest aplikacja prezentacyjna webserwisu. Jest to
kalkulator."/>
<message type="TTS" voice="EWA" value="Za chwilę zostaniesz poproszony o podanie liczb i rodzaju
działania."/>
</info>
<action type="getDTMF" length="3" timeout="3">
<message type="TTS" voice="EWA" value="Podaj liczbę"/>
</action>
<exit_code>0</exit_code>
</service_application>
Należy zwrócić uwagę na atrybut xsi:NoNamespaceSchemaLocation, który wskazuje na adres URL do schematu XML Schema, z którym będą walidowane zarówno pod względem semantycznym jak i syntaktycznym odpowiedzi XML zwracane przez usługę sieciową. Schemat XSD zamieszczony jest pod adresem: http://webservices.freeconet.pl/Aplikacja.xsd
Sekcja service_application składa się z następujących elementów:
- memory - sekcja, w której możliwe jest zapisanie zawartość pamięci w celu wykorzystania przy kolejnych wywołaniach Zintegruj np. numer wywołania, zapamiętane liczby. Może wystąpić tylko raz.
- info - sekcja informacyjna wiadomości, umożliwia przeczytanie dowolnego teksu na początku wywołania. Nie zawiera dodatkowych atrybutów. Może wystąpić tylko raz. W ramach sekcji info może wystąpić dowolna ilość sekcji message.
- action - sekcja umożliwia wykonanie jednej z trzech akcji (rodzaj akcji określany jest przez atrybut type). Może wystąpić tylko raz. Możliwe są następujące akcje:
1. getDTMF – pobiera znaki podane przez użytkownika z klawiatury telefonu w aktywnym polączeniu.
W przypadku sekcji getDTMF konieczne jest wykorzystanie atrybutów length oraz timeout.
Parametry:
timeout – maksymalny czas (w sekundach) na wybranie znaków przez użytkownika. Może przyjmować wartości od 0 do 300.
Znaki pobierane są w trakcie odgrywania komunikatu głosowego a maksymalny czas liczony jest od momentu pobrania pierwszego znaku, bądź (jeśli nic nie wybrano) od zakończenia odgrywania komunikatu głosowego. Jeśli wciśniemy znak # to pobieranie zostanie przerwane i system wyśle do usługi sieciowej aktualnie zapamiętane znaki.
Przykład użycia:
<action type="getDTMF" length="3" timeout="3">
<message type="TTS" voice="JAC" value="Podaj liczbę"/>
</action>
Parametry:
Przykład użycia:
<action type="getVOICE" timeout="60">
<message type="TTS" voice="JAC" value="Zostaw wiadomość po sygnale"/>
</action>
Parametry:
number – numer telefonu na który nastąpi dzwonienie. Format numeru e164.
Atrybuty timeout jest opcjonalny. Dla prawidłowego działania wartość tego atrybutu powinna być ustawiona na 45.
Przykład użycia:
<action type="callNUMBER" timeout="45" number="+48221234567" />
- exit_code - Kod wyjścia. (0 – usługa Zintegruj kontynuuje działanie, inny kod – przerwanie działania i wywołanie aplikacji przypisanej do tego kodu w GUI [w ekranie konfiguracji usługi Zintegruj w panelu]). Może wystąpić tylko raz. Może przyjmować tylko nieujemne wartości całkowite.
- type – typ, przyjmuje jedną z dwóch wartości:
3MB, zapisane w formacie PCM, 8000hz, 16bit mono
TTS: wiadomość jest syntezowana przez syntezator mowy. Możliwe jest użycie dowolniej liczny wiadomości typu TTS (Text To Speech), co daje możliwość czytania różnych wiadomości przy pomocy różnych głosów.
- voice – nazwa głosu. Przyjmuje jedną z 8 wartości:
EWA – synteza głosem polskim Ewy
MAJ – synteza głosem polskim Maji
ERI – synteza głosem angielskim Eric
NO – w przypadku, gdy wiadomość jest pobierana z pliku (type = AUDIO)
| & |
& |
| ' | ' |
| " | " |
| < | < |
| > | > |
- value - treść wiadomości albo adres URL do pliku.
<info>
<message type="TTS" voice="JAC" value="Komunikat odegrany głosem Jaceka"/>
<message type="AUDIO" voice="NO" value="http://adres_servera/zapowiedz.wav"/>
<message type="TTS" voice="EWA" value="Komunikat odegrany głosem Ewy"/>
</info>
zostaną przeczytane najpierw wszystkie wiadomości TTS (w kolejności wystąpienia) a następnie wiadomość typu AUDIO.
3. Komunikacja ZINTEGRUJ → USŁUGA SIECIOWA
Usługa Zintegruj komunikuje się z usługą sieciową przy pomocy metody POST, gdzie przesyłane są następujące zmienne:
- number_from – numer telefoniczny zapisany w formacie e164
- number_to – numer telefoniczny zapisany w formacie e164
- memory – wartość zmiennej pamięć, którą przekazano do serwera albo przez GUI (początkowa zawartość pamięci) albo przez znacznik memory podczas komunikacji z usługą sieciową
- action_type – typ akcji dla której generowana jest ta odpowiedź.
- action_result – wynik akcji.
| action_type | action_result |
| getDTMF | Znaki wybrane z klawiatury telefonu. Jeśli usługa kliencka pisana jest w języku PHP to można je pobrać w następujący sposób: if ($_P OST['action_type'] == 'getDTMF') { echo "Wybrano z klawiatury telefonu: ".$_P OST['action_result']; } |
| getVOICE | Czas nagrania. [ms] W przypadku akcji typu getVOICE do odpowiedzi dołączany jest także plik z nagraniem. Jeśli usługa kliencka pisana jest w języku PHP to można go pobrać w następujący sposób: if ($_P OST['action_type'] == 'getVOICE') { $tmp_name = $_F ILES['file']['tmp_name']; $name = $_F ILES['file']['name']; if (is_up loaded_file($tmp_name) && file_exists($tmp_name)) { if (!move_up loaded_file($tmp_name,"katalog_docelowy/".$name)) { echo "plik nie został zapisany w katalogu docelowym"; } else { echo "plik zapisano w katalogu docelowym" } } echo "Czas nagrania: ".$_P OST['action_result']; } |
| callNUMBER | Status połączenia: · ANSWER – połączenie zostało odebrane · NOANSWER – połączenie nie zostało odebrane · BUSY – strona docelowa jest zajęta · ERROR – nie udało się połączyć |


