Zapoznaj się z Naszym systemem.

Do twojej dyspozycji oddajemy szeroki zbiór
tutoriali, poradników wideo i audio.

W limtel.pl możesz zaprojektować scenariusz rozmowy telefonicznej przy użyciu prostego i intuicyjnego języka programowania.

Przykład na początek:

graj(melodia001)
pobierz (
    ile: 4
    mow: Witaj. Podaj PIN.
    zapisz: $A
)

http (
    metoda: get
    url: http://api.gdziestam.com:3000/auth/dasd3as3234az/$A
    zapisz: $B
)

jezeli $B
    kiedy ok
        mow(Autoryzacja się powiodła. Łączę z konsultantem.)
        polacz (
            nr: 123456789
        )
        rozlacz
    inaczej
        mow(Brak dostępu!)
        graj(reklama002)
        rozlacz
    koniec
Kilka słów wyjaśnienia:

Osoba dzwoniąca na tak zaprogramowaną linię telefoniczną na wstępie usłyszy uprzednio nagraną zapowiedź (zapowiedz001). Plik dźwiękowy zawierający wspomnianą zapowiedź został wcześniej uploadowany przez interfejs www lub nagrany przy użyciu telefonu.

Po odegraniu zapowiedzi system zapyta użytkownika za pomocą polecenia pobierz() o dokładnie 4 cyfry wybrane z klawiatury jego telefonu. Zauważ, że użyto tutaj parametru mow. Powoduje to zastosowanie syntezatora mowy, dzięki czemu nie trzeba samemu przygotowywać mowy, jaką usłyszy osoba dzwoniąca. Synteza mowy brzmi bardzo naturalnie i daje wrażenie, jakby zatrudniony został profesjonalny lektor. Cyfry wprowadzone przez użytkownika zapisywane są do zmiennej $A, przez co możemy je wykorzystać w dalszej części programu.

Następnie użyte zostaje polecenie http(). Jest ono kluczowe w integracji linii telefonicznych z Twoimi systemami informatycznymi. Pozwala ono na wykonanie zapytania GET lub POST na wskazany URL. W powyższym przykładzie zakładamy, że http://api.example.com:3000/auth/ba38cd85/[pin] sprawdza, czy podany numer znajduje się w Twojej bazie danych. Zauważ, że jako [pin] przesyłamy wcześniej wprowadzone cyfry ($A). Rezultat zapytania zapisany jest do kolejnej zmiennej - $B.

Kiedy już odpytamy zewnętrzne API, możemy przejść do użycia instrukcji warunkowej jezeli. W podanym przykładzie sprawdzamy zwróconą przez API zmienną $B. Kiedy jest ona równa ciągowi znaków "ok" informujemy przy użyciu syntezatora mowy o powodzeniu autoryzacji (polecenie mow()) oraz dokonujemy połączenia ze wskazanym numerem telefonu (polacz()). Dopóki nie nastąpi połączenie osoba dzwoniąca słyszy muzykę, później zaś może rozmawiać z konsultantem zupełnie tak, jakby dzwoniła bezpośrednio do niego. Po zakończeniu rozmowy wszystkie połączenia są zrywane (rozlacz()).

Jeżeli zewnętrze API zwróci cokolwiek innego niż "ok" (w tym błąd) zadziała klauzula inaczej. Dzwoniący usłyszy wówczas stosowny komunikat i odegrany dżingiel reklamowy. Następnie połączenie zostanie zakończone.

Jak widać, stworzenie własnej infolinii jest bardzo proste. Po zapoznaniu się z ogólną koncepcją możemy przejść do omówienia zasad naszego języka i konkretnych poleceń. Na przykładach przedstawimy Tobie, jak należy ich używać i co za ich pomocą można osiągnąć. W dalszej części dokumentacji czekają na Ciebie przykładowe plany rozmów wraz z komentarzami, dzięki którym będziesz mógł szybko rozpocząć tworzenie własnych rozwiązań. Zapraszamy do lektury!

Informacje wstępne:

  • polskie znaki muszą być kodowane w UTF-8
  • wszelkie powtarzające się spacje i tabulatory są traktowane jako jedna spacja
  • komentarze zaczynają się od znaku #

Zmienne

Zmienna jest oznaczona pojedynczą wielką literą poprzedzoną znakiem $. Pozwala ona na zapamiętanie wyniku polecenia, aby można było użyć go jako parametr kolejnych poleceń. Miało to miejsce w pierwszym przykładzie, gdzie zapamiętaliśmy pod zmienną $A cyfry wpisane z klawiatury telefonu użytkownika, by potem przesłać je do zewnętrznego API. Żeby móc skorzystać ze zmiennej, musi ona posiadać uprzednio nadaną wartość. Zmienna o nienadanej wartości jest pustym ciągiem znaków. Więcej informacji o zmiennych znajdziesz w opisach poleceń wykorzystujących poszczególne zmienne.

Typy funkcji:

bezargumentowa
Tego typu polecenia nie przyjmują żadnych parametrów. Wywołujemy je pisząc ich nazwę, opcjonalnie dodając do nazwy "()".

przykłady:

rozlacz()
rozlacz
jednoargumentowa
Polecenia jednoparametrowe przyjmują maksymalnie jeden parametr. Wywołujemy je pisząc ich nazwę i parametr pomiędzy nawiasami.

przyklady:

mow(witam i o zdrowie pytam)
wiadomosc()
wiadomosc($A)
wieloparametrowe
Polecenia mogące przyjąć więcej niż jeden parametr. Wywołujemy je pisząc nazwę polecenia i otwierając w tej samej lub nowej linii nawias. Po nawiasie w nowych liniach znajdują się pary typu parametr: wartość.

przykłady:

pobierz(
    ile: 4
    zapisz: $A
    mow: podaj pin
)
polacz(
    nr: 123456789
    zapisz: $A
)

polacz(
    nr: 123456789
)

Polecenie: graj

polecenie jednoparametrowe

Polecenie "graj" powoduje odegranie uprzednio utworzonego pliku dźwiękowego z Twojej biblioteki dźwięków. Nazwa dźwięku nie może zawierać spacji. Plik musi istnieć w Twojej bibliotece. Nazwę dźwięku można podać również jako zmienną, np. jeżeli odgrywany dźwięk ma zależeć od odpowiedzi zwróconej przez odpytywany przez HTTP API. Dźwięk jest odgrywany w całości, przy czym odgrywanie dźwięku można przerwać poprzez naciśnięcie dowolnego klawisza na klawiaturze telefonu.

Więcej o dźwiękach znajdziesz w dziale dzwieki.

wywołanie:

graj(NAZWA_DŹWIĘKU) - parametr alfanumeryczny bez spacji
graj(ZMIENNA)

przykład:

graj(muzyczka-12)
graj($A)

Polecenie: graj_bp

polecenie identyczne do graj(), nie pozwala jednak na przerwanie odtwarzania poprzez naciśnięcie klawisza

Polecenie: mow

polecenie jednoparametrowe

Polecenie mow() powoduje wypowiedzenie tekstu przez lektora z użyciem syntezatora mowy Ivona. Tekst musi znajdować się pomiędzy cudzysłowami. Tekst można podać też jako zmienną, jeżeli chcemy generować dynamiczne odpowiedzi, np. przez HTTP API. Wypowiedź lektora może zostać przerwana poprzez wciśnięcie dowolnego klawisza na klawiaturze telefonu. Może ona zawierać maksymalnie 1 zmienną lub być zmienną.

wywołanie:

mow(TEKST_DO_WYPOWIEDZENIA)
mow(ZMIENNA)

przykład:

mow(Witamy w infolinii!)
mow(W dzisiejszym losowaniu wylosowano numer $A)
Maksymalna długość tekstu do wypowiedzenia to 255 znaków. Tyczy się to wszystkich poleceń używających syntezy mowy.

Polecenie: mow_bp

polecenie identyczne do mow(), nie pozwala jednak na przerwanie mowy poprzez naciśnięcie klawisza

Polecenie: rozlacz

wywołanie:

rozlacz
rozlacz()

Polecenie rozlacz() powoduje bezwzględne zakończenie rozmowy (odłożenie słuchawki). Może pojawiać się w kodzie wielokrotnie (co jest zalecaną taktyką - daje pewność, że rozmowa nie zawiśnie w martwym punkcie). Przykład zastosowania znajduje się przy opisie polecenia jezeli().

Polecenie: pobierz

polecenie wieloparametrowe

Polecenie pobierz() pozwala nam pobrać cyfry z klawiatury telefonu (tony DTMF). Jeżeli chcemy odegrać zapowiedź, którą użytkownik może przerwać poprzez wciśnięcie klawisza, możemy użyć parametrów graj lub mow (polecenia te się WYKLUCZAJĄ).

parametry:
  • ile: LICZBA 1-9 (wymagany) - ile liczb pobrać z klawiatury
  • zapisz: ZMIENNA (wymagana) - do jakiej zmiennej zapisać wprowadzane liczby
  • mow: TEKST DO WYPOWIEDZENIA, nie może zawierać zmiennych (opcjonalny, wykluczający się z parametrem graj)
  • graj: PLIK DO ODEGRANIA (zamiennie z mow) może być zmienną - parametr alfanumeryczny bez spacji
  • zakoncz: * LUB # (opcjonalny) - pozwala na przedwczesne (tj. zanim zostanie osiągnięte "ile") zakończenie wprowadzania cyfr
  • czekaj: ile sekund czekamy na każdą kolejną liczbę (opcjonalny, domyślnie 15, przedział 1..30)

przykłady:

pobierz
(
  ile: 4
  czekaj: 30
  graj: zapowiedz001
  zakoncz: #
  zapisz: $T
)
mow(napisałeś $T)
pobierz
(
  ile: 1
  zapisz: $Z
  mow: Proszę wcisnąć klawisz na telefonie.
)

w każdym poleceniu wieloparametrowym poprawna jest również konstrukcja z nawiasem po poleceniu:

pobierz(
  ile: 4
  graj: zapowiedz002
  czekaj: 20
  zakoncz: #
  zapisz: $Q
)

PORADA: używaj pobierz() z parametrami mow/graj, zamiast mow()/graj() i potem pobierz()

prawidłowe użycie - naciśnięcie klawisza, gdy jeszcze trwa wypowiedzenie "Proszę podać 2 liczby." spowoduje zapisanie pobranych cyfr do $Z

pobierz
(
  ile: 2
  : $Z
  mow: Proszę podać 2 liczby.
)

nieprawidłowe użycie - naciśnięcie klawisza, gdy jeszcze trwa wypowiedzenie "Proszę podać 2 liczby." spowoduje tylko przerwanie tego zdania i przejście do pobierz()
mow(Proszę podać 2 liczby.)
pobierz
(
  ile: 2
  zapisz: $Z
)

Sterowanie przebiegiem rozmowy

Sterowanie przebiegiem rozmowy spowoduje, że Twoja linia będzie zachowywała się różnie w zależności od czynników zewnętrznych. Inaczej powinna przebiegać rozmowa w przypadku gdy, przykładowo, klient poda zły numer zamówienia lub gdy zadzwoni po godzinach pracy. Zamierzony efekt można uzyskać przy użyciu poleceń przedstawionych w tym dziale.

Polecenie: powtarzaj

pętla, polecenie bezparametrowe

Kod pomiędzy powtarzaj a powtarzaj_koniec jest powtarzany (tzw. pętla) do czasu rozłączenia się użytkownika lub użycia polecenia powtarzaj_wyjdz.

przykład:

powtarzaj
  mow(Ten tekst będę mówić w kółko, dopóki się nie rozłączysz)
powtarzaj_koniec

bardziej rozbudowany przykład został przedstawiony w ramach omawiania polecenia jezeli.

Polecenie: jezeli

instrukcja warunkowa, występuje razem ze słowami kiedy, inaczej, koniec

Polecenie jeżeli jest kluczowe do sterowania przebiegiem rozmowy. Powoduje wykonanie poleceń w zależności od wartości zmiennej. Wymagana co najmniej 1 sekcji kiedy. Sekcja inaczej jest opcjonalna. Całość musi być zakończona słowem koniec.

wywołanie:

jezeli ZMIENNA
  kiedy WARTOSC
    polecenia
    polecenia
  kiedy WARTOSC 
    polecenia
    polecenia
  inaczej
    polecenia
    polecenia
koniec

przykład #1:

Potrafisz już pobrać cyfry z klawiatury telefonu ( pobierz() ). Spróbujmy więc pokierować rozmową telefoniczną w zależności od wprowadzonych cyfr.
pobierz(
  ile: 1
  mow: Naciśnij 1, aby poznać godziny przyjęć. Naciśnij 2, żeby dowiedzieć się o naszej ofercie.
  czekaj: 30
  zapisz: $A
)

jezeli $A
  kiedy 1
    mow(Jesteśmy czynni od poniedziałku do piątku w godzinach od ósmej do szesnastej.)
    rozlacz
  kiedy 2
    graj(oferta001)
    rozlacz
  koniec

mow(Do tego miejsca dzwoniący nie dojdzie, jeżeli wciśnie 1 lub 2)  

przykład #2:

W tym przykładzie nie pozwolimy dzwoniącemu przejść dalej, dopóki nie poda poprawnego kodu PIN. Osiągniemy to za pomocą połączenia poleceń powtarzaj i jeżeli.
# wszystko pomiędzy poleceniami powtarzaj a powtarzaj_koniec wykonywane jest w pętli
# pętla kończy się jedynie, gdy program natrafi na polecenie powtarzaj_wyjdz

powtarzaj

  pobierz(
    ile: 4
    mow: Prosimy o podanie numeru PIN.
    czekaj: 30
    zapisz: $A
  )

  jezeli $A
    kiedy 1234
      mow(Pin poprawny, dziękujemy)
      # wychodzimy z pętli 
      powtarzaj_wyjdz
    inaczej
      # informujemy o złym numerze PIN
      # nie wychodzimy z pętli 
      mow(Zły PIN.)
    koniec

  mow(Spróbuj jeszcze raz)

  # wracamy do początku

powtarzaj_koniec

# tutaj program kontynuuje pracę po wyjściu z pętli
mow(Witamy w sekcji dla zalogowanych użytkowników)

Polecenie: menu

polecenie wieloparametrowe

Polecenie menu pomaga w konstruowaniu typowego menu telefonicznego. Pozwala nam na ograniczenie możliwych wyborów dla użytkownika i nie przepuszcza go dalej, jeżeli wybór z klawiatury jest poza dopuszczalnym zakresem. Ten sam efekt da się uzyskać za pomocą kombinacji poleceń pobierz, jeżeli i powtarzaj, ale dzięki użyciu polecenia menu kod jest dużo krótszy.

parametry:
  • wybor: ZAKRES w formie X..Y gdzie X>0, X
  • zapisz: ZMIENNA do której zapisać wynik (wymagana)
  • zapowiedz_mow: ZAPOWIEDZ Z UŻYCIEM SYNTEZATORA MOWY (wymagany zamiennie z zapowiedz_graj) - nie może zawierać zmiennych
  • zapowiedz_graj: ZAPOWIEDZ Z PLIKU (wymagany zamiennie z zapowiedz_mow) - może być zmienną, parametr alfanumeryczny bez spacji
  • ostrzegaj_mow: OSTRZEŻENIE O BŁĘDNYM WYBORZE Z UŻYCIEM SYNTEZATORA MOWY (wymagany zamiennie z ostrzegaj_graj) - nie może zawierać zmiennych
  • ostrzegaj_graj: OSTRZEŻENIE O BŁĘDNYM WYBORZE Z PLIKU (wymagany zamiennie z ostrzegaj_mow) - może być zmienną, parametr alfanumeryczny bez spacji
Wróćmy do pierwszego przykładu z opisu polecenia jezeli:
pobierz(
  ile: 1
  mow: Naciśnij 1, aby poznać godziny przyjęć. Naciśnij 2, żeby dowiedzieć się o naszej ofercie.
  czekaj: 30
  zapisz: $A
)

jezeli $A
  kiedy 1
    mow(Jesteśmy czynni od poniedziałku do piątku w godzinach od ósmej do szesnastej.)
    rozlacz
  kiedy 2
    graj(oferta001)
    rozlacz
  koniec

mow(Do tego miejsca dzwoniący nie dojdzie, jeżeli wciśnie 1 lub 2)
Kod jest poprawny, ale ma jedną wadę - dzwoniący może nacisnąć cyfrę np. 3, której blok jezeli..kiedy nie rozpoznaje. Przeróbmy go tak, by nie pozwalał na wpisanie niczego innego niż 1 i 2.
menu(
  zapowiedz_mow: Naciśnij 1, aby poznać godziny przyjęć. Naciśnij 2, żeby dowiedzieć się 
  o naszej ofercie.
  ostrzegaj_mow: Nieprawidłowy wybór. Wybierz 1 lub 2.
  wybor: 1..2
  zapisz: $A
)

jezeli $A
  kiedy 1
    mow(Jesteśmy czynni od poniedziałku do piątku w godzinach od ósmej do szesnastej.)
    rozlacz
  kiedy 2
    graj(oferta001)
    rozlacz
  koniec

# do tego miejsca dzwoniący nigdy nie dojdzie

Przekierowywanie połączeń

Polecenie: polacz

wieloparametrowa

Powoduje połączenie dzwoniącego z wybranymi numerami telefonu. Zwykle służy do łączenia użytkownika z “żywym” konsultantem. Jeżeli podany jest więcej niż 1 numer telefonu - system dzwoni pod wszystkie numery i przekazuje rozmowę do pierwszej osoby, która odbierze. Numer telefonu musi być 9-cio cyfrowy: stacjonarny z kierunkowym lub komórkowy. W tej chwili dopuszczone są tylko numery polskie.

parametry
  • nr: NUMERY oddzielone przecinkami (przynajmniej 1) tylko polskie, 9 cyfr
  • zapisz: ZMIENNA do której zapisać informację, czy doszło do połączenia (opcjonalny)
  • dzwon: ile czasu dzwonić (domyślnie 15 sekund, przedział 5..30, opcjonalny)
  • komunikat: statyczny dźwięk, jaki ma być odegrany osobie do której się dzwoni (opcjonalny), parametr alfanumeryczny bez spacji
  • nagraj: tak/nie - czy nagrać rozmowę, opcjonalne. więcej o nagraniach przeczytasz w dziale nagrania.
Jeżeli w panelu użytkownika zdefiniowano muzykę w oczekiwaniu na połączenie, to następuje jej odegranie. Polecenie polacz potrafi zwrócić informację o sukcesie połączenia do zmiennej. Zwraca albo odebrano albo nieodebrano. Opcja komunikat może być wykorzystana do informowania konsultanta o nadchodzącym połączeniu. Jest ono przydatne wówczas, gdy polecenie przełącza rozmowy do osób pracujących "w terenie" (np. przedstawicieli, techników) i gdy chcemy ich poinformować za pomocą odpowiedniego komunikatu o typie przychodzącej rozmowy (np. "za chwile nastąpi połączenie w sprawie awarii").

Przykład 1
mow(W trosce o bezpieczeństwo naszych klientów, wszystkie rozmowy są nagrywane.)
polacz(
  nr: 123456789
  nagraj: tak
)
Przykład 2
mow(Łączę z naszym działem technicznym.)
polacz
(
  nr: 123456789,12346780,22346780
  komunikat: klient_dzwoni
)

Przykład 3
mow(Łączę z konsultantem.)

powtarzaj

  polacz(
    nr: 123456789
    dzwon: 30
    zapisz: $A
  )

  jezeli $A
    kiedy odebrano
      powtarzaj_wyjdz
    kiedy nieodebrano
      mow(Spróbujmy jeszcze raz.)
    koniec

powtarzaj_koniec

mow(Mamy nadzieję, że są Państwo zadowoleni z rozmowy.)

Polecenie: kolejka

wieloparametrowa

Zauważ, że przykład #3 dotyczący polecenia polacz realizuje NIESPRAWIEDLIWĄ strategię połączeń. Nie kolejkuje w żaden sposób napływających rozmów. W przypadku trwającej już rozmowy i pojawieniu się dwóch innych połączeń może dojść do sytuacji, w której osoba dzwoniąca jako druga dostanie się do konsultanta przed pierwszą. W takiej sytuacji lepiej zdefiniować KOLEJKĘ rozmów. Szersze omówienie kolejek znajdziesz w dziale kolejki.

Polecenie kolejka powoduje zakolejkowanie rozmowy w uprzednio utworzonej kolejce.

parametry:
  • nazwa: NAZWA_KOLEJKI, parametr alfanumeryczny bez spacji
  • komunikat: statyczny dźwięk, jaki ma być odegrany osobie do której się dzwoni (opcjonalny)
  • zapisz: ZMIENNA do której zapisać informację o tym, czy doszło do połączenia (opcjonalny)
  • dzwon: ile czasu dzwoniący może przebywać w kolejce (przedział 30..600, domyślnie 180 sekund)
  • nagraj: tak/nie - czy nagrać rozmowę, opcjonalne. więcej o nagraniach przeczytasz w dziale nagrania.
  • zapisz_kto: ZMIENNA do której zapisać numer telefonu/adres SIP osoby z kolejki, która odebrała połączenie (opcjonalny)
przykłady:
kolejka
(
    nazwa: konsultanci
    nagraj: tak
)

kolejka
(
    nazwa: dzial_techniczny
    komunikat: przychodzace001
    zapisz: $K
    dzwon: 600
    zapisz_kto: $G
)

numer_dzwoniacego($D)

sms
(
  nr: $G
  tresc: numer rozmowcy to $D
)

# uwaga
# jeżeli przez 600 sekund nikt nie odbierze - dialplan będzie kontynuowany
# jeżeli konsultant odbierze i KONSULTANT się rozłączy - dialplan będzie kontynuowany
# jeżeli dzwoniący się rozłączy - dialplan NIGDY NIE DOJDZIE DO TEGO MIEJSCA

jezeli $K
  kiedy nieodebrano
    mow(Przepraszamy. Nasi konsultanci nie mogą w tej chwili odebrać telefonu. 
    Po usłyszeniu sygnału zostaw wiadomość.)
    nagraj_wiadomosc
koniec

Nagrywanie i odsłuchiwanie wiadomości

Przed nagrywaniem niektórych rozmów może być wymagana zgoda rozmówcy. Zanim zaczniesz nagrywać rozmowy skonsultuj się z prawnikiem.

Polecenie: nagraj wiadomosc

polecenie z maksymalnie jednym parametrem

Powoduje nagranie wiadomości - tzw. "automatyczna sekretarka". Opcjonalnie zapisuje ID wiadomości do zmiennej. Może być przydatne podczas późniejszego odtwarzania wiadomości.

wywołanie:
nagraj_wiadomosc
nagraj_wiamomosc(ZMIENNA do której ma zostać zapisane ID wiadomości)
przykład:
pobierz
(
  mow: Jeżeli chcesz zostawić wiadomość naciśnij 0.
  ile: 1
  zapisz: $W
)

jezeli $W
  kiedy 0
    mow(Po usłyszeniu sygnału zostaw wiadomość)
    nagraj_wiadomosc
koniec

Polecenie: wiadomosc

jednoparametrowe

Polecenie odtwarza wcześniej nagraną wiadomość o zadanym ID.

wywołanie:

wiamomosc(ID WIADMOSCI)

przykład:

mow(Nagraj się!)
nagraj_wiadomosc($A)
mow(Odtwarzam twoje nagranie)
wiadomosc($A)

Integracja z zewnętrznym API¶

Polecenie http

wieloparametrowa

Dzięki poleceniu http możesz integrować linie telefoniczne ze swoimi systemami informatycznymi np. stroną www, systemem CRM, sklepem internetowym. Więcej informacji znajdziesz w dziale Integracja z API.

Polecenie powoduje odwołanie się do zewnętrznego API i przypisanie zwróconej wartości do zmiennej (max 255 znaków)

Jeżeli strona zwróci kod HTTP 200 i Content-Type “text/plain”, to zmienna będzie równa całej treści dokumentu. Jeżeli strona zwróci kod 200 i Content-Type “text/xml”, to system spodziewać się będzie dokumentu XML sformatowanego w następujący sposób:
<limtel>
   <answer>Twoja przesyłka została wysłana.</answer>
</limtel>
Jeżeli strona zwróci kod 200 i Content-Type “application/json” to system spodziewać się będzie obiektu JSON sformatowanego w następujący sposób: Jeżeli strona zwróci kod 200 i Content-Type “text/xml”, to system spodziewać się będzie dokumentu XML sformatowanego w następujący sposób:
{
    limtel: "Twoja przysyłka została wysłana." 
}

parametry:
  • url: ADRES w formacie http(s)://host:/... (wymagany, może zawierać zmienne)
  • metoda: get/post (wymagany)
  • param: parametry wymagane dla POST (format para1=tekst¶2=$B)
  • zapisz: ZMIENNA (wymagana)
  • rozlacz: tak/nie (opcjonalny - czy przeprosić rozmówcę i zakończyć połączenie w razie błędu w komunikacji z zewnętrznym API)

przykład:

pobierz(
  ile: 4
  mow: Podaj numer swojej przesyłki.
  zakoncz: #
  zapisz: $A
)

http(
  url: https://api.example.com/yhs623a1zzn1/paczka/$A/status?idtelefon
  metoda: get
  zapisz: $B
)

mow(Stan twojej przysyłki to $B)

przykład:

pobierz(
  ile: 4
  mow: Podaj swój numer klienta.
  zakoncz: #
  zapisz: $A
)

pobierz(
  ile: 2
  mow: Podaj numer pokoju.
  zakoncz: #
  zapisz: $B
)

http(
  url: http://api.example.com:5800/rezerwacja.php
  param: id$A&pokoj$B&typtelefoniczna
  metoda: post
  zapisz: $C
  rozlacz: tak
)

mow($C)
rozlacz
UWAGA! Polecenie zwróci err, jeżeli wystąpi błąd w komunikacji z zewnętrznym API (np. oczekiwanie dłuższe niż 5 sekund). Zwykle warto wtedy zakończyć połączenie:
http(
  url: http://api.example.com/api
  param: id12
  metoda: post
  zapisz: $A
)

jezeli $A
  kiedy err
    mow(Przepraszamy, wystąpiły problemy techniczne.)
    rozlacz
  koniec

mow(Stan twojej przesyłki to $A)

Ten podobny efekt można uzyskać używając parametru "rozlacz: tak" - przy czym wtedy połączenie zakańczane jest automatycznie i nie mamy wpływu na jego dalszy przebieg.

Polecenie: sms

Polecenie powoduje wysłanie wiadomości SMS. Nadawcą SMS jest "limtel.pl".

parametry:
  • nr: NUMER (wymagany)
  • tresc: TRESC WIADOMOSCI SMS (wymagana)
uwagi:
  • NUMER powinien być w formacje 9-cio cyfrowym
  • TREŚĆ powinna zawierać wyłącznie znaki a-z A-Z 0-9 _ . , ! ? % $ @ + - # * i spację, może mieć maksymalnie 120 znaków
  • TREŚĆ zostaje automatycznie konwertowana do ASCII (bez polskich znaków)
  • NUMER i TREŚĆ mogą być zmiennymi
przykład:
pobierz
(
  ile: 4
  mow: Wpisz swój numer klienta.
  zapisz: $A
)

sms
(
  nr: 12345678
  tresc: Klient $A zadzwonił na infolinię.
)

Polecenie: godzina

jednoparametrowe

Polecenie zapisuje do zmiennej PEŁNĄ godzinę. Może być bardzo przydatne, jeżeli chcemy uzależnić działanie naszej infolinii od pory dnia.

wywołanie:
godzina(ZMIENNA)

przykład:

godzina($A)
jezeli $A
    kiedy 8..15
        mow(Witamy w naszej firmie, łączę z konsultantem.)
        kolejka
        (
          nazwa: dzial_obslugi
        )
    inaczej
        mow(Prosimy dzwonić w godzinach od ósmej do szesnastej.)
        rozlacz
    koniec

Polecenie: dzien_tygodnia

jednoparametrowe

zapisuje do zmiennej dzień tygodnia, gdzie 1 to poniedziałek, 2 to wtorek itd.

wywołanie:
dzien_tygodnia(ZMIENNA)
rozszerzmy kod z przykładu podanego do polecenia godzina o rozpoznawanie dnia tygodnia:
godzina($A)
dzien_tygodnia($B)

jezeli $B
  kiedy 6..7
    mow(Informujemy, że nasza firma nie pracuje w weekendy.)
    rozlacz
  inaczej
    jezeli $A
      kiedy 8..15
        mow(Witamy w naszej firmie, łączę z konsultantem.)
        kolejka
        (
          nazwa: dzial_obslugi
        )
      inaczej
        mow(Prosimy dzwonić w godzinach od ósmej do szesnastej.)
        rozlacz
    koniec
koniec

W powyższym przykładzie widać jeszcze jedną ważną właściwość DialScriptu - funkcje warunkowe można zagnieżdżać. Najpierw sprawdzamy, czy dzień tygodnia odpowiada trybowi pracy firmy - jeżeli tak jest, to przechodzimy do sprawdzenia, czy połączenie nastąpiło w godzinach pracy.

Polecenie: godziny_pracy

wieloparametrowe

Sprawdza dzień tygodnia i godzinę oraz zapisuje do zmiennej, czy telefon nastąpił w trakcie czasu pracy. Pozwala na skrócenie kodu w przypadku standardowych godzin pracy infolinii.

parametry:
  • wybierz zmienną, do której zapisać informacje (wymagane) - zwraca praca albo wolne
  • godziny - zakres 0..23 - w jakich godzinach pracuje infolinia (wymagane)
  • sobota - zakres 0..23 - w jakich godzinach w sobotę pracuje infolinia (opcjonalne, zakres dni powinien obejmować sobotę)
  • niedziela - zakres 0..23 - w jakich godzinach w niedzielę pracuje infolinia (opcjonalne, zakres dni powinien obejmować niedzielę)
  • dni - zakres 0..6 - w jakich dniach pracuje infolinia (0 - niedziela, 1 - poniedziałek, .. , 6 -sobota )
Jeżeli nie podamy godzin dla soboty i niedzieli, to przyjęty zostanie czas pracy z parametru godziny.
godziny_pracy
(
  godziny: 8..16
  dni: 1..5
  zapisz: $T
)

jezeli $T
  kiedy praca
    mow(Witamy w naszej firmie, łączę z konsultantem.)
    kolejka
    (
      nazwa: dzial_obslugi
    )
  inaczej
    mow(Informujemy, że nasza firma pracuje od poniedziałku do piątku w godzinach od ósmej 
    do szesnastej)
    rozlacz
koniec

Polecenie: numer_dzwoniacego

jednoparametrowa

Zapisuje do zmiennej numer telefonu osoby dzwoniącej.

Uwagi:
  • jeżeli jest to połączenie wychodzące, to zwraca numer telefonu kanału
  • zwraca Unknown, gdy numer jest ukryty (z Wielkiej litery!)
wywołanie:
numer_dzwoniacego(ZMIENNA)
przykład:
numer_dzwoniacego(ZMIENNA)

numer_dzwoniacego($A) sms ( nr: 123123123 tresc: nastapilo polaczenie z numeru $A ) mow(Witamy w infolinii!)

Konferencje

Polecenie: pokoj

bezparametrowa

Powoduje dołączenie dzwoniącego do prostej konferencji. Pierwszy użytkownik biorący udział w konferencji słyszy muzykę, dopóki nie dołączy się drugi użytkownik. W konferencji spotykają się osoby dzwoniące z tego samego kanału (numeru telefonu).

wywołanie:
pokoj
przykład:
mow(Dołączasz do konferencji.)
pokoj

Polecenie: konferencja

wieloparametrowa

Zaawansowana konferencja z możliwością:
  • zarządzania przez interfejs www (kick/mute/unmute/volume)
  • interaktywnego przekazywania kodów DTMF na wskazany URL (interaktywne gry, zgłaszanie się do odpowiedzi itp.)
  • współdzielenia konferencji pomiędzy różnymi numerami telefonów (np. inny dla wykładowcy, inny dla słuchaczy)
  • nagrywania całej konferencji
Więcej informacji o konferencji znajdziesz w dziale Konferencje. parametry:
  • nazwa: NAZWA (wymagana), parametr alfanumeryczny bez spacji
  • tryb: normalny/sluchacz (wymagany)
  • limit: ile użytkowników maksymalnie może być podłączonych do konferencji (max/default: 100)
  • dtmf: URL na który wysyłać DTMF (format jak przy poleceniu http)
  • nagraj: tak/nie (opcjonalny) czy nagrywać konferencje
uwagi:
  • dzwoniący, który ma tryb normalny może nadawać i słuchać
  • sluchacz tylko słucha (można to zmienić poprzez UNMUTE w interfejsie www)
  • jeżeli wskazano dmtf URL to każde naciśnięcie klawisza spowoduje HTTP POST na dany url z parametrem user zawierającym unikalny id usera oraz parametrem key zawierającym naciśnięty klawisz
UWAGA! jeżeli konferencja() występuje na wielu kanałach, należy pilnować by URL DTMF wszędzie był taki sam (w przeciwnym wypadku url będzie się zmieniał zależnie od tego, na który kanał wszedł ostatnio uczestnik).

UWAGA! nagrywanie konferencji jest nieco podchwytliwe. Więcej w dziale Konferencje.

Przykłady:
mow(Witamy w konferencji!)
konferencja
(
  nazwa: konf1
  tryb: normalny
  nagraj: tak
)
mow(Witamy na wykładzie. Jeżeli będziesz chciał zgłosić się do odpowiedzi wybierz 0 
na klawiaturze swojego telefonu.)
konferencja
(
  nazwa: konf2
  tryb: sluchacz
  limit: 30
  dtmf: http://api.example.com/konf2/uj8lr3az21z/zgloszenia.php
)

Polecenie: uid

Zapisuje do zmiennej unikalny identyfikator rozmowy, identyczny jak używany przy przesyłaniu DTMF z konferencji. yy

Wywołanie:
uid(ZMIENNA)
może służyć do identyfikowania użytkowników konferencji:
  • każdemu potencjalnemu użytkownikowi przydzielamy inny PIN powiązany z jego imieniem i nazwiskiem
  • przed konferencją pobieramy PIN z klawiatury i odczytujemy UID
  • przesyłamy przez HTTP parę PIN/UID
  • tłumaczymy w panelu zarządzającym konferencją UID na nazwisko

Polecenie: strefa

Zapisuje do zmiennej 2 pierwsze cyfry numeru dzwoniącego, lub “SN” (Strefa Nieznana), gdy dzwoni z zagranicy, z zastrzeżonego numeru lub komórki.

wywolanie:

strefa(ZMIENNA)

przykład:

strefa($A)
jezeli $A
  kiedy 89
    mow(Witamy w oddziale Olsztyn.)
  kiedy 22
    mow(Witamy w oddziale Warszawa.)
  inaczej
    mow(Witamy.)
koniec

Polecenie: mail

Wysyła wiadomość email na dany adres.

parametry:
  • do: adres email odbiorcy
  • temat: temail wiadomości
  • tresc: treść wiadomości

przykład:

mail
(
  do: kowalski@example.com
  temat: limtel
  tresc: zadzwoniono na infolinię o numerze 897228989
)