- rozkaz skoku pod etykietę ze zmiennej. - do tego miejsca skok w przypadku błędu w programie. - wymagana wersja CC4 dla wykonania programu



Podobne dokumenty
OmniTouch 8400 Instant Communications Suite Integracja z programem Microsoft Outlook

Programowanie centrali telefonicznej Platan Libra

Zakład Teleelektroniczny "ZETKOM"

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Instrukcja do oprogramowania ENAP DEC-1

Instrukcja obsługi rejestratorów XVR. Zapoznaj się przed użyciem

System IVR CC4. podręcznik instalatora. wersja 2D autor Z. Czujewicz ZETKOM

Instrukcja obsługi rejestratorów XVR. wersja

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Mechanizmy pracy równoległej. Jarosław Kuchta

Skrócona instrukcja obsługi programu Cisco ViewMail for Microsoft Outlook (wersja 8.5 i nowsze)

Podręcznik użytkownika

Instrukcja pisania i użytkowania makroinstrukcji w programie TELE 32

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

GRM-10 - APLIKACJA PC

Telefoniczne Usługi abonenckie w sieci CHOJNET

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

ActiveXperts SMS Messaging Server

Konfiguracja parametrów pozycjonowania GPS /5

System IVR. Opis elementów systemu

Windows Server 2008 Standard Str. 1 Ćwiczenia. Opr. JK. I. Instalowanie serwera FTP w Windows Server 2008 (zrzuty ekranowe z maszyny wirtualnej)

Internetowy serwis Era mail Aplikacja sieci Web

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

PODRĘCZNIK UŻYTKOWNIKA programu Pilot

Opis procedur asemblera AVR

Kurs walut. Specyfikacja projektu. Marek Zając

Panel Konta - instrukcja. Warszawa, 2013 r

Aplikacja Sieciowa wątki po stronie klienta

INSTRUKCJA OBSŁUGI PROGRAMU DO ODCZYTU PAMIĘCI FISKALNEJ DATECS OPF

Ciśnieniomierz typ AL154AG08.P

Sieci komputerowe i bazy danych

Konfiguracja interfejsu (złącza) PENDRIVE. Plik: PEN-01 PEN_45 PL

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Zegarek może wysyłać wiadomości SMS oraz przesyłać dane. Ich koszt jest zależny od operatora karty SIM zainstalowanej w zegarku.

FonTel L4NET - Telepol centrale telefoniczne, bramki gsm, nagrywanie rozmów

Zakładanie konta

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Centrala alarmowa ALOCK-1

Dokumentacja interfejsu MySQL. Platforma BSMS.PL Instrukcja podłączenia po przez mysql

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

DOSTĘPNE KONFIGURACJE

Ćwiczenie 8: konfiguracja zdarzeń alarmowych w systemie monitoringu analogowego CCTV REGIONALNE CENTRUM EDUKACJI ZAWODOWEJ W BIŁGORAJU

Podstawy Programowania C++

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

INSTALACJA I KONFIGURACJA Instalacja systemu WF-Mag Mobile 2

DERBY 450 INSTRUKCJA OBSŁUGI

Software konfiguracyjny dla Mini Gate A.

Mediatel 4B Sp. z o.o., ul. Bitwy Warszawskiej 1920 r. 7A, Warszawa,

SERWER AKTUALIZACJI UpServ

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Rozpoczęcie pracy z programem.

Spis treści 1. Założenia ogólne 2. Wymagania 3. Typy SMSów 4. Statusy SMSów 5. Wysyłanie SMSów - Web API 6. Wysyłanie SMSów - 7.

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Zadania semestralne. Programowanie obiektowe sem. II, lato 2014/2015

Kurier DPD by CTI. Instrukcja

WebMobile7 and Sello Integrator wersja 1.1.2

Manual konfiguracji konta dla fax2mail

Dokumentacja smsapi wersja 1.4

Wyróżnik protokołu: ' [0x60] Protokół HOTELP.pdf

Usługi dostępne dla abonenta platformy telefonicznej

program TRX

DOKUMENTACJA INTERFEJSU MY MYSQL. Platforma SMeSKom instrukcja podłączenia poprzez mysql Protokół w wersji 2.0

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

USŁUGI DOSTĘPNE W TELEFONII STELLAtel zestaw usług obowiązuje od dnia r Stalowa Wola ul. Ofiar Katynia 35

Bazy danych - wykład wstępny

Rozdział ten zawiera informacje na temat zarządzania Modułem VoIP oraz jego konfiguracji.

MODUŁ GŁOSOWY INT-VG. 1. Właściwości. 2. Dane techniczne

DOKUMENTACJA TECHNICZNA SMS API MT

Polecenia wewnętrzne:

APARAT TELEFONICZNY DERBY 400 INSTRUKCJA OBSŁUGI

TEMAT : System operacyjny MS DOS pliki wsadowe

ArtPlayer. Odtwarzacz plików video sterowany poprzez Artnet/DMX V Instrukcja obsługi.

Instalacja i konfiguracja Symfonia.Common.Server oraz Symfonia.Common.Forte

SMS SMS telefon. Umożliwia łatwe i szybkie wysyłanie wiadomości SMS...

Autor: Joanna Karwowska

Skrócona instrukcja obsługi Menedżera połączeń CommPilot

MODUŁ KOMUNIKACYJNY GSM-4

Migracja z programu Symfonia Kadry i Płace wer 3.x do Kadr i Płac Forte

Lab5 - Badanie protokołów pocztowych

Wykaz zmian w programie SysLoger

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Instrukcja użytkownika. Aplikacja dla Comarch Optima

Skrócona instrukcja obsługi osobistego portalu głosowego

Instrukcja do programu Do7ki 1.0

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Odczyt zegara ze sterownika do panelu serii TIU z możliwością korekty ustawień zegara w sterowniku

Instrukcja Instalacji. Użytkowanie R4mCRM. Prosimy uważnie przeczytać instrukcję! Redaktor: Z.C. Rev.02.

Komunikacja między sterownikami przez protokół ADS

MAGENTO INTEGRATOR BY CTI INSTRUKCJA

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Tworzenie prostej etykiety i synchronizacja etykiet z wagą. AXIS Sp. z o.o. Kod produktu:

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHNICZNA 1

Rejestratory AVILINK. ze starszym firmware v3

KURIER BY CTI. Instrukcja do programu DATA Informatycznej Zygmunt Wilder w Gliwicach WERSJA mgr Katarzyna Wilder DLA DPD

Transkrypt:

Spis instrukcji CC4 z uwzględnieniem wersji programu i silnika : // - komentarz tylko w linii if (wyrażenie warunek wyrażenie) "polecenie" - polecenie warunkowe warunki = - równe > - większe < - mniejsze <> - różne >= - większe lub równe <= - mniejsze lub równe ~ - string zawiera znak(i) (dtmf~'123') ^ - string odpowiada masce (lcd^'061*') % - string zawiera string (dtmf%'123') label=? goto=? goto=str1 on_error engine=x.x hook_on hook_off record_on record_off play_on ('plik.wav') play_off play_str (zmienna_str,'selektor języka') dial_sys (klawisz byte) dial_dtmf (zmienna_str) clr_dtmf clr_stoper1 clr_stoper2 clr_stoper3 clr_stoper4 clr_stoper5 - etykieta skoku - rozkaz skoku do etykiety - rozkaz skoku pod etykietę ze zmiennej - do tego miejsca skok w przypadku błędu w programie - wymagana wersja CC4 dla wykonania programu - dołącz się do linii - odłącz się od linii - uruchom nagrywanie - zakończ nagrywanie - uruchom odtwarzanie, plik do odtworzenia musi znajdować się w katalogu wskazanym jako katalog komunikatów - zakończ odtwarzanie - uruchom odtwarzanie zawartości zmiennej ( czytanie cyfr i liter ) wymaga plików o z nagraniami znaków np. 1.wav, a.wav, dla selektora języka 'pl' np. 1pl.wav, apl.wav. - wyslij polecenie do kanału - wybierz numer w dtmf-ie ( Uwaga! Wymaga plików 1dtmf.wav itd. w katalogu komunikatów ) - kasuje bufor odbioru dtmf-u - zeruje stoper 1 odmierzający czas - zeruje stoper 2 odmierzający czas - zeruje stoper 3 odmierzający czas - zeruje stoper 4 odmierzający czas - zeruje stoper 5 odmierzający czas wait_timer1 - czekaj do końca timera 1 wait_timer2 - czekaj do końca timera 2 wait_timer3 - czekaj do końca timera 3 wait_timer4 - czekaj do końca timera 4 wait_timer5 - czekaj do końca timera 5 wait_play restart debugprint (zmienna) - czekaj do końca odtwarzania - uruchom program od początku - wyświela wartość zmiennej w oknie debugowania i wstrzymuje program ( wymaga włączenia przełącznika DEBUG )

clr_semaphore01.. clr_semaphore32 - wyzeruj semafor 1..32 init_semaphore get_semaphore01.. get_semaphore32 pobrany - wyzeruj wszystkie semafory - sprawdź i pobierz semafor w instrukcji if (get_semaphore01) goto=semafor is_record - czy nagrywanie bool is_play - czy odtwarzanie bool is_hook - stan linii bool is_find - wynik przeszukania bazy numerów bool is_file {'filename'} - czy jest taki plik bool dtmf - wybrane cyfry w dtmf-ie str clip - numer clip str to_dial - numer do wybrania z bazy str dtmf_cnt - ilość wybranych cyfr w dtmf-ie byte ring - stan dzwonienia byte hour - aktualna godzina byte minute - aktualna minuta byte time - godzina w minutach word year - aktualny rok word month - aktualny miesiąc byte day - aktualny dzień byte day_of_week - dzień tygodnia byte 1 - niedziela date - dzisiejsza data w formacie 'rrrrmmdd' str level_rec - poziom sygnału byte stoper1 stoper2 stoper3 stoper4 stoper5 - stoper podaje czas w sekundach od ostatniego zerowania - stoper podaje czas w sekundach od ostatniego zerowania - stoper podaje czas w sekundach od ostatniego zerowania - stoper podaje czas w sekundach od ostatniego zerowania - stoper podaje czas w sekundach od ostatniego zerowania { uwaga! stopery można zmniejszać instrukcją dec (stoper1,milisekundy) } timer1=? - timer sekundowy 1 timer2=? - timer sekundowy 2 timer3=? - timer sekundowy 3 timer4=? - timer sekundowy 4 timer5=? - timer sekundowy 5 is_bool1=? - przełącznik 1 is_bool2=? - przełącznik 2

is_bool3=? - przełącznik 3 is_bool4=? - przełącznik 4 is_bool5=? - przełącznik 5 var1=? - zmienna lokalna 1 var2=? - zmienna lokalna 2 var3=? - zmienna lokalna 3 var4=? - zmienna lokalna 4 var5=? - zmienna lokalna 5 str1=? - zmienna tekstowa lokalna 1 str2=? - zmienna tekstowa lokalna 2 str3=? - zmienna tekstowa lokalna 3 str4=? - zmienna tekstowa lokalna 4 str5=? - zmienna tekstowa lokalna 5 gl_bool1=? - przełącznik globalny 1 gl_bool2=? - przełącznik globalny 2 gl_bool3=? - przełącznik globalny 3 gl_bool4=? - przełącznik globalny 4 gl_bool5=? - przełącznik globalny 5 gl_var1=? - zmienna globalna 1 gl_var2=? - zmienna globalna 2 gl_var3=? - zmienna globalna 3 gl_var4=? - zmienna globalna 4 gl_var5=? - zmienna globalna 5 inc (zmienna) - zwiększ zmienną var o 1 inc (zmienna,wartość) - zwiększ zmienną var o wartość dec (zmienna) - zmniejsz zmienną var o 1 dec (zmienna,wartość) - zmniejsz zmienną var o wartość { uwaga! instrukcją dec (stoper1,5000) => można zmniejszyć wartość naliczoną przez stoper o 5 sekund } save_str ('filename',zmienna_str) load_str ('filename',zmienna_str) - zapisz zmienną tekstową do pliku - odczytaj zmienną tekstową z pliku false = 0 - stała oznaczająca fałsz true = 1 - stała oznaczająca prawdę b_flash100ms - flash 100 ms b_flash200ms - flash 200 ms b_flash300ms b_flash400ms b_flash500ms b_flash600ms b_flash700ms - flash 300 ms - flash 400 ms - flash 500 ms - flash 600 ms - flash 700 ms

b_flash800ms b_flash900ms roz_out roz_in roz_outb roz_inb roz_kom (opis) roz_nr=? roz_ab=? roz_ko=? roz_tm=? roz_nt=? iocontrol1 ($hh) file_delete ('filename') email_r_mail=? email_r_subj=? email_r_body=? email_r_atta=? email_s_mail=? email_s_name=? email_s_user=? email_s_pass=? email_s_host=? email_s_auth=? record_off+mail roz_out+mail roz_in+mail roz_outb+mail roz_inb+mail roz_kom+mail (opis) roz_out+mail+link roz_in+mail+link roz_outb+mail+link roz_inb+mail+link roz_kom+mail+link (opis) roz_out+link roz_in+link - flash 800 ms - flash 900 ms - dodaj rozmowę wychodzącą - dodaj rozmowę przychodzącą - dodaj rozmowę niedoszłą - dodaj rozmowę nieodebraną - dodaj komunikat - numer wybrany - numer abonenta - kod konta - czas trwania - notatka - ustawia stan portu lpt1 - kasuje plik - adres odbiorcy poczty - temat poczty - treść poczty - plik załącznika - nadawca poczty - nadawca poczty - konto nadawcy - hasło nadawcy - serwer smtp - autoryzacja serwera - zakończ nagrywanie i wyślij mailem - dodaj rozmowę wychodzącą i wyślij mailem - dodaj rozmowę przychodzącą i wyślij mailem - dodaj rozmowę niedoszłą i wyślij mailem - dodaj rozmowę nieodebraną i wyślij mailem - dodaj komunikat i wyślij mailem - dodaj rozmowę wychodzącą, połącz z nagraniem i wyślij mailem - dodaj rozmowę przychodzącą, połącz z nagraniem i wyślij mailem - dodaj rozmowę niedoszłą, połącz z nagraniem i wyślij mailem - dodaj rozmowę nieodebraną, połącz z nagraniem i wyślij mailem - dodaj komunikat, połącz z nagraniem i wyślij mailem - dodaj rozmowę wychodzącą i połącz z nagraniem - dodaj rozmowę przychodzącą i połącz z nagraniem

roz_outb+link roz_inb+link roz_kom (opis)+link - dodaj rozmowę niedoszłą i połącz z nagraniem - dodaj rozmowę nieodebraną i połącz z nagraniem - dodaj komunikat i połącz z nagraniem Polecenia od engine 1.4 ------------------------------------------------------ // zmienne tekstowe mogą zawierać duże litery i spacje play_bin (zmienna_bin,'selektor języka') - uruchom odtwarzanie zmiennej binarnej wymaga plików z nagraniami tak jak play_str is_bool6=? - przełącznik 6 is_bool7=? - przełącznik 7 is_bool8=? - przełącznik 8 is_bool9=? - przełącznik 9 is_bool0=? - przełącznik 0 var6=? - zmienna lokalna 6 var7=? - zmienna lokalna 7 var8=? - zmienna lokalna 8 var9=? - zmienna lokalna 9 var0=? - zmienna lokalna 0 str6=? - zmienna tekstowa lokalna 6 str7=? - zmienna tekstowa lokalna 7 str8=? - zmienna tekstowa lokalna 8 str9=? - zmienna tekstowa lokalna 9 str0=? - zmienna tekstowa lokalna 0 gl_bool6=? - przełącznik globalny 6 gl_bool7=? - przełącznik globalny 7 gl_bool8=? - przełącznik globalny 8 gl_bool9=? - przełącznik globalny 9 gl_bool0=? - przełącznik globalny 0 gl_var6=? - zmienna globalna 6 gl_var7=? - zmienna globalna 7 gl_var8=? - zmienna globalna 8 gl_var9=? - zmienna globalna 9 gl_var0=? - zmienna globalna 0 Polecenia od engine 1.5 ------------------------------------------------------ level_max clr_level_max - poziom sygnału maksymalny byte (readonly) - wyzeruj poziom sygnału gl_str1=? - zmienna tekstowa globalna 1 gl_str2=? - zmienna tekstowa globalna 2 gl_str3=? - zmienna tekstowa globalna 3 gl_str4=? - zmienna tekstowa globalna 4 gl_str5=? - zmienna tekstowa globalna 5 gl_str6=? - zmienna tekstowa globalna 6

gl_str7=? - zmienna tekstowa globalna 7 gl_str8=? - zmienna tekstowa globalna 8 gl_str9=? - zmienna tekstowa globalna 9 gl_str0=? - zmienna tekstowa globalna 0 gl_str{0..99}=? - zmienna tekstowa globalna 0..99 gl_bool{0..99}=? - przełączniki globalne 0..99 gl_date0=? - data globalna 0 gl_date1=? - data globalna 1 gl_date2=? - data globalna 2 gl_date3=? - data globalna 3 gl_date4=? - data globalna 4 gl_date5=? - data globalna 5 gl_date6=? - data globalna 6 gl_date7=? - data globalna 7 gl_date8=? - data globalna 8 gl_date9=? - data globalna 9 gl_date{0..99}=? - daty globalne 0..99 rec_pause_on rec_pause_off level_mid clr_level_mid gosub=? return - wstrzymaj nagrywanie - uruchom nagrywanie - poziom sygnału średni byte (readonly) - wyzeruj poziom średniego - rozkaz do podprogramu możliwe 16 poziomów podprogramów - powrót z podprogramu możliwe 16 poziomów podprogramów Polecenia od engine 1.6 ------------------------------------------------------ sms_out (port,'pin','numer','text') - wysłanie sms-a, wymaga biblioteki dll i zainstalowanego modemu GSM Polecenia od engine 1.7 ------------------------------------------------------ logprint (zmienna) - wysyła komunikat do logu gl_var{0..99}=? - zmienna globalna 0..99 Wprowadzona możliwość adresowania zmiennej zmienną tak jak w przykładzie poniżej gl_var{var0}=? chanel line_state{1..32} port_state{1..32} line_state port_state roz_nr{1..32}=? roz_ab{1..32}=? roz_ko{1..32}=? roz_tm{1..32}=? - numer aktualnego programu - stan linii z M3 - stan linii z R3 - stan linii dla bieżącego portu - stan linii dla bieżącego portu - numer wybrany - numer abonenta - kod konta - czas trwania

gl_record{1..32} - czy nagrywanie bool gl_play{1..32} - czy odtwarzanie bool gl_hook{1..32} - stan linii bool isdn_clip{1..32} isdn_ddi_msn{1..32} - ostatni clip odczytany z linii isdn str - ostatni ddi lub msn odczytany z linii isdn str Polecenia od engine 1.8 ------------------------------------------------------ cti_ext_on (nr_wewnętrzny) cti_ext_off (nr_wewnętrzny) cti_ext_dial (nr_wewnętrzny,cyfry) cti_ext_state {nr_wewnętrzny} cti_ext_numb cti_ext_ddi cti_co_state {nr_portu} cti_new_connect - zajęcie wewnętrznego - zwolnienie wewnętrznego - wybranie cyfr - stan numeru wewnętrznego stany : 0 - wolny 1 - zajęty 2 - połączony 3 - dzwoni Uwaga! w zmiennych będą dostępne dalsze informacje - zmienna str numer wybrany lub clip - zmienna str numer ddi lub wzywany - stan portu miejskiego stany : 0 - wolny 1 - zajęty 2 - połączony 3 - dzwoni Uwaga! w zmiennych będą dostepne dalsze informacje - odczytuje informacje o nowym połączeniu w centrali (cti ) stany : False - brak informacji True - informacja w zmiennych aktualizuje zmienne : cti_con_type;cti_con_ext1;cti_con_ext2;cti_con_co1;cti_con_co2;cti_con_time;cti_con_dir cti_ext_connect {nr_wewnętrzny} - odczytuje informacje o połączeniu dla wewnętrznego stany : False - brak informacji ( połączenia ) True - informacja w zmiennych ( jest połączenie ) cti_co_connect {nr_portu} - odczytuje informacje o połączeniu dla portu miejskiego stany : False - brak informacji ( połączenia ) True - informacja w zmiennych ( jest połączenie ) cti_con_type - typ połączenia : 0 - ext<->ext 1 - ext<->co 2 - co<->co cti_con_ext1 - numer dołączony 1 cti_con_ext2 - numer dołaczony 2 cti_con_co1 - port dołączony 1 cti_con_co2 - port dołaczony 2 cti_con_time cti_con_dir cc4_ext - aktualny czas trwania połączenia - kierunek połączenia : 0 - wychodzące 1 - przychodzące - zwraca numer wewnętrzny przypisany do kanału CC4

cc4_con - zwraca nazwę linii miejskiej przypisaną do kanału Polecenia od engine 1.9 ------------------------------------------------------ str_del (zmienna_str0-9,pozycja_znaku_do_usunięcia,ilość znaków) - dotyczy lokalnych zmiennych str0.. str9 sql_connect sql_create_db ('nazwa bazy') sql_select_db ('nazwa bazy') sql_drop_db ('nazwa bazy') sql_close - dołączenie do bazy danych - utworzenie bazy danych - wybranie pazy danych - usunięcie bazy danych - odłączenie od bazy danych sql_quwery: tutaj zapytanie/polecenie SQL - wykonuje polecenie/zapytanie sql {var1} {str1} - tak wpisane zmienne zostaną zamienione na wartości zmiennych sql_first sql_next sql_prior sql_last is_sql sql_fieldscount sql_rowscount sql_field_var {numer pola} sql_field_str {numer pola} clr_event is_event_loop is_event_noloop is_event_busy is_event_alert - ustawia na pierwszy wiersz odpowiedzi - następny wiersz odpowiedzi - poprzedni wiersz odpowiedzi - ostatni wiersz odpowiedzi - czy jest połączenie z bazą danych bool - zwraca ilość pól odpowiedzi var - zwraca ilość wierszy odpowiedzi var - zwraca pole jako zmienną var - zwraca pole jako zmienną str - skasuj zdarzenia - wykryto prąd w łączu bool - wykryto brak prądu w łączu bool - wykryto sygnał zajętości ( tylko przy nagrywaniu ) - wykryto sygnał ostrzegawczy ( tylko przy nagrywaniu ) Polecenia od engine 2.0 ------------------------------------------------------ cti_ext_exec (nr_wewnętrzny,cyfry,akcja) play_autostop info (zmienna) - wybranie cyfr, transfer, hold itp. - zmienna bool sterująca stanem zatrzymywania odtwarzania od wykrycia dtmf-u - wyświela wartość zmiennej w oknie info ( karta powiązania ) b_drop = 0 - rozłączenie po tapi b_ansfer = 1 - odebranie po tapi b_dial = 2 - wybranie numeru po tapi b_hold = 3 - hold po tapi b_unhold = 4 - unhold po tapi b_park = 5 - park po tapi b_unpark = 6 - unpark po tapi b_trans_set = 7 b_trans_comp = 8 float0=? - przygotowanie transferu po tapi - zakończenie transferu po tapi - zmienna (zmiennoprzecinkowa)

float1=? float2=? float3=? float4=? float5=? float6=? float7=? float8=? float9=? play_curr (zmienna_float) sql_field_float {numer pola} - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - zmienna (zmiennoprzecinkowa) - odczytuje cenę, wymaga plików wav - zwraca pole jako zmienną float Polecenia od engine 2.1 ------------------------------------------------------ play_link ('plik1.wav','plik2.wav','plik3.wav'... ) - łączy nagrania i odtwarza razem on_usb_err on_tapi_err on_sql_err b_clear_station = 254 - do tego miejsca skok po błędzie usb - do tego miejsca skok po błędzie tapi - do tego miejsca skok po błędzie sql - wyzerowanie numeru b_clear_all = 255 - wyzerowanie całego tapi restore break= played sign_rst peerip peerport peeropen peerkey - powrót do programu po obsłudze błedu - wyskoczenie z podprogramu do etykiety - ile czasu miało odtworzone nagranie - wyślij reset do nagrywarki - numer zdalnego ip programu CRM - numer portu zdalnego programu CRM - numer portu w programie CRM do komunikacji - numer klucza zalogowanego użytkownika Opis języka programowania CC4: Założenia : - każdy kanał może mieć swój program sterujący. - niektóre zmienne mogą być dostępne dla wszystkich programów co umożliwia komunikację między programową lub sterowanie kilku programów jednym zdarzeniem. - program jest wykonywany sekwencyjnie dlatego w jednej linii poza poleceniami warunkowymi nie można wpisywać więcej niż jednej instrukcji. - zdarzenia sygnalizowane zmiennymi są całkowicie asynchroniczne względem programu dlatego zawartość zmiennej np. reprezentującej odebrane cyfry w dtmf-ie może zmienić się pomiędzy instrukcjami, należy mieć tego świadomość - prędkość wykonywania programu wynosi 200 instrukcji/sekundę dla każdego kanału ( czyli 25'600 instrukcji/sekundę ) dla wszystkich kanałów. - wykonanie niektórych instrukcji może trwać dość długo np. Zapytania do bazy danych, w takiej sytuacji wstrzymanie wykonania programu dotyczy tylko jednego kanału - kontrola programu wykrywa tylko błędy składni, a nie logiki programu Zmienne : W programach możemy posługiwać się zmiennymi które występują w kilku typach : - zmienne var reprezentujące dane stałoprzecinkowe np. Dla odliczania ilości wykonania pętli - zmienne str przechowujące teksty i cyfry np. Numer do wybrania - zmienne bool przechowujące dane typu prawda/fałsz, umożliwiają realizację np. Przełączników - zmienne float reprezentują dane zmiennoprzecinkowe np. Informację o cenie produktu itp. - zmienne date przechowują daty

Zmienne lokalne : var0.. var9 - zmienna lokalna (stałoprzecinkowa) var1=5 str0.. str9 - zmienna tekstowa lokalna str3='0618358600' is_bool0.. is_bool9 - zmienna bool lokalna is_bool9=true float0.. float9 - zmienna lokalna (zmiennoprzecinkowa) przykład float5=37.24 Zmienne globalne, widoczne przez wszystkie programy : gl_var0.. gl_var9 - zmienna globalna (stałoprzecinkowa) gl_var1=3 gl_str0.. gl_str9 - zmienna tekstowa globalna gl_str1='etykieta' gl_bool0.. gl_bool9 - zmienna bool globalna gl_bool3=false gl_date0.. gl_date9 - globalna data gl_date0='20070102' Zmienne globalne, dostęp indeksowany : Do zmiennych globalnych indeksowanych można uzyskać dostęp wpisując indeks jako stałą lub indeksując przy pomocy zmiennej var. gl_var{0..99} - zmienna globalna 0..99 gl_var{1}=50 jest równoważne gl_var1=50 czy też var0=1 gl_var1{var0}=50 gl_str{0..99} - zmienna tekstowa globalna 0..99 gl_str{70}='0618358600'

gl_bool{0..99} - przełączniki globalne 0..99 var0=30 gl_bool{var0}=true gl_date{0..99} - daty globalne 0..99 gl_date{0}='20070101' Zmienne specjalne ( timery i stopery ): Zmienne te umożliwiają kontrolę czasu w programach. timer1.. timer5 wait_timer1.. wait_timer5 - zmienne których wartość zmniejsza się z rozdzielczością 1ms - instrukcja czeka do wyzerowania timera oczekiwanie przez 5 sekundowego timer1=5000 wait_timer1 lub timer1=5000 label=petla if (timer1>0) goto=petla stoper1.. stoper5 clr_stoper1.. clr_stoper5 - stoper podaje czas w sekundach od ostatniego zerowania - zerowanie stopera pomiar czasu wykonania podprogramu clr_stoper1 gosub=podprogram debugprint (stoper1) Zmienne specjalne ( nagrywanie, odtwarzanie, zajętość linii ) is_record - czy nagrywanie bool if (is_record) gosub=informacja_rozmowa_nagrywana is_play - czy odtwarzanie bool play_on ('Zapowiedź.wav') label=czekaj if (is_play) goto=czekaj is_hook - stan linii bool if (is_hook) hook_off gl_record{1..32} - czy nagrywanie ale z innego kanału var0=3 if (gl_record{var0}) debugprind ('Kanał 3 nagrywa') gl_play{1..32} - czy odtwarzanie ale z innego kanału if (gl_play{20}) debugprint ('Kanał 20 odtwarza')

gl_hook{1..32} - stan linii ale z innego kanału if (gl_hook{30}) goto=kanal30zajety Zmienne specjalne ( sygnały akustyczne i dzwonienie ) dtmf - wybrane cyfry w dtmf-ie str if (dtmf='101') goto=do_sekretariatu dtmf_cnt - ilość wybranych cyfr w dtmf-ie byte label=czekaj_na_4_cyfry if (dtmf_cnt<4) goto=czekaj_na_4_cyfry clr_dtmf - kasuje bufor odbioru dtmf-u Zmienne specjalne ( stan kanału ) ring - stan dzwonienia byte if (ring<>0) goto=odbierz restart label=odbierz level_rec - poziom sygnału chwilowy byte zmienna zwraca prawdziwą wartość tylko jeżeli jest uruchomione nagrywanie if (level_rec>64) goto=glosno level_max - poziom sygnału maksymalny byte (readonly) zmienna zwraca prawdziwą wartość tylko jeżeli jest uruchomione nagrywanie clr_level_max - wyzeruj poziom sygnału clr_level_max timer1=5000 wait_timer1 if (level_max>64) goto=byl_sygnal level_mid - poziom sygnału średni byte (readonly) zmienna zwraca prawdziwą wartość tylko jeżeli jest uruchomione nagrywanie clr_level_mid - wyzeruj poziom średniego clr_level_mid timer1=5000 wait_timer1 if (level_mid>32) goto=sredni_sygnal_w_normie Zmienne specjalne ( data, czas, dzień tygodnia ) hour - aktualna godzina byte if (hour>=16) goto=firma_nieczynna minute - aktualna minuta byte

if (hour=16) if (minute>30) goto=jest_po_1630 time - godzina w minutach word if (time<480) goto=przed_praca if (time>960) goto=po_pracy year - aktualny rok word month - aktualny miesiąc byte day - aktualny dzień byte if (year=2008) if (month=1) if (day=1) play_on ('Witamy_w_nowym_roku.wav') day_of_week - dzień tygodnia byte 1 - niedziela if (day_of_week=1) play_on ('W_niedziele_nie_pracujemy.wav') date - dzisiejsza data w formacie 'rrrrmmdd' str if (date='20071224') play_on ('Dzisiaj_pracujemy_do_godziny_14.wav') if (date='20071225') play_on ('Dzisiaj_nieczynne_zapraszamy_27.wav') if (date='20071226') play_on ('Dzisiaj_nieczynne_zapraszamy_27.wav') if (is_play=false) play_on ('Witamy'wav') Zmienne specjalne ( stan portów M3 i R3 ) line_state - stan linii dla bieżącego portu z M3 if (line_state=0) goto=linia_wolna port_state - stan linii dla bieżącego portu z R3 if (port_state=3) goto=zmiana_polaryzacji line_state{1..32} - stan linii z M3 indeksowany odczyt stanu linii port_state{1..32} - stan linii z R3 indeksowany odczyt stanu portu Zmienne pomocnicze chanel - numer aktualnego programu if (chanel=1) debugprint ('Śledzenie programu tylko dla kanału 1') cc4_ext - zwraca numer wewnętrzny przypisany do kanału CC4 if (cc4_ext='101') debugprint ('Przypisany numer 101') cc4_con - zwraca nazwę linii miejskiej przypisaną do kanału if (cc4_con='10') debugprint ('Przypisany do linii 11') Zmienne specjalne ( generowanie billingu )

roz_nr=? roz_ab=? roz_ko=? roz_tm=? roz_nt=? - numer wybrany - numer abonenta - kod konta - czas trwania - notatka roz_nr=dtmf roz_ab=cc4_ext roz_ko='' roz_tm=stoper1 roz_nt='dodane przez CC4' roz_out roz_nr{1..32}=? - numer wybrany indeksowany dostęp do numeru wybranego roz_ab{1..32}=? - numer abonenta indeksowany dostęp do numeru abonenta roz_ko{1..32}=? - kod konta indeksowany dostęp do kodu konta roz_tm{1..32}=? - czas trwania indeksowany dostęp do czasu trwania połączenia Zmienne specjalne ( wysyłanie poczty elektornicznej ) email_r_mail=? email_r_subj=? email_r_body=? email_r_atta=? email_s_mail=? email_s_name=? email_s_user=? email_s_pass=? email_s_host=? email_s_auth=? - adres odbiorcy poczty - temat poczty - treść poczty - plik załącznika - nadawca poczty - nadawca poczty - konto nadawcy - hasło nadawcy - serwer smtp - autoryzacja serwera email_r_mail='odbiorca@serwer.com.pl' email_r_subj='masz nową wiadomość' email_r_body='kliknij za załącznik aby odsłuchać nagranie' email_r_atta='c:\zestawienie.txt' email_s_mail='cc4@system.pl' email_s_name='cc4' email_s_user='cc4@system.pl' email_s_pass='hasło' email_s_host='system.pl' email_s_auth=true record_off+mail Sterowanie przepływem programu label= goto= goto=str1 - etykieta skoku - rozkaz skoku do etykiety - rozkaz skoku pod etykietę ze zmiennej

label=czekaj if (ring=0) goto=czekaj czy też if (day_of_week=1) str1='niedzela' if (day_of_week=6) str1='sobota' if (str1<>'') goto=str1 label=niedziela debugprint ('Jest niedziela') label=sobota debugprint ('Jest sobota') on_error - do tego miejsca skok w przypadku błędu w programie on_error debugprint ('W programie wystąpił błąd') on_usb_err - do tego miejsca skok po błędzie usb on_usb_err debugprint ('Sprawdź połączenie USB') on_tapi_err - do tego miejsca skok po błędzie tapi on_tapi_err debugprint ('Sprawdź połączenie TAPI') on_sql_err - do tego miejsca skok po błędzie sql on_sql_err debugprint ('Sprawdź bazę danych') restart - uruchom program od początku if (ring>0) goto=odbierz restart label=odbierz gosub= - rozkaz do podprogramu możliwe 16 poziomów podprogramów str1='info1.wav' gosub=odtworz_zapowiedź label=odtworz_zapowiedz play_on (str1) wait_play return return restore - powrót z podprogramu możliwe 16 poziomów podprogramów - powrót do programu po obsłudze błedu

on_sql_err sql_connect restore break= - wyskoczenie z podprogramu do etykiety str1='info1.wav' gosub=odtworz_zapowiedz label=zakoncz_zapowiedz play_off label=odtworz_zapowiedz play_on (str1) label=odtwarzanie if (dtmf='#') break=zakoncz_zapowiedz if (is_play) goto=odtwarzanie return if (wyrażenie warunek wyrażenie) "polecenie" - polecenie warunkowe warunki = - równe > - większe < - mniejsze <> - różne >= - większe lub równe <= - mniejsze lub równe ~ - string zawiera znak(i) (dtmf~'123') ^ - string odpowiada masce (lcd^'061*') % - string zawiera string (dtmf%'123') if (var1>0) goto=petla if (ring<>0) goto=dzwonienie if (dtmf~'#') goto=odebrano_potwierdzenie if (dtmf^'06183586**') goto=numer_wykryty Sterowanie dołączeniem do linii hook_on hook_off - dołącz się do linii - odłącz się od linii if (ring>0) goto=odbierz restart label=odbierz hook_on play_on ('Powitanie.wav') wait_play hook_off restart Sterowanie odtwarzaniem komunikatów play_on ('plik.wav') - uruchom odtwarzanie, plik do odtworzenia musi znajdować się w katalogu wskazanym jako katalog komunikatów play_on ('Powitanie') play_off - zakończ odtwarzanie if (is_play) play_off

play_str (zmienna_str,'selektor języka') - uruchom odtwarzanie zawartości zmiennej Uwaga! W katalogu komunikatów muszą znajdować się pliki reprezentujące znaki występujące w zmiennej tekstowej dla 1,2,3,4,a,b będzie to 1.wav, 2.wav, 3.wav, 4.wav, a.wav, b.wav jeżeli jest podany selektor języka to pliki puszą posiadać w nazwie selektor języka dla pl będzie to 1pl.wav, 2pl.wav, 3pl.wav, 4pl.wav, apl.wav, bpl.wav dla en będzie to 1en.wav, 2en.wav, 3en.wav, 4en.wav, aen.wav, ben.wav str1='12ac7' gosub=odtworz_kod_dostepu play_str (str1) wait_play return play_bin (zmienna_bin,'selektor języka') - uruchom odtwarzanie zmiennej binarnej Uwaga! W katalogu komunikatów muszą znajdować się pliki reprezentujące cyfry z lub bez selektora języka w zależności od potrzeb Maksymalna czytana liczba to 9999 0.wav, 1.wav, 2.wav, 3.wav, 4.wav, 5.wav, 6.wav, 7.wav, 8.wav, 9.wav 10.wav, 11.wav, 12.wav, 13.wav, 14.wav, 15.wav, 16.wav, 17.wav, 18.wav, 19.wav 20.wav, 30.wav, 40.wav, 50.wav, 60.wav, 70.wav, 80.wav, 90.wav 100.wav, 200.wav, 300.wav, 400.wav, 500.wav, 600.wav, 700.wav, 800.wav, 900.wav 1000.wav, 2000.wav, 3000.wav, 4000.wav, 5000.wav, 6000.wav, 7000.wav, 8000.wav, 9000.wav play_autostop - zmienna bool sterująca stanem zatrzymywania odtwarzania od wykrycia dtmf-u play_autostop=true play_curr (zmienna_float) - odczytuje cenę, wymaga plików wav Uwaga! W katalogu komunikatów muszą znajdować się pliki reprezentujące cyfry wraz z odmianą Maksymalna czytana wartość to 9'999'999, dokładność zawsze dwie cyfry po przecinku PLNGa.wav grosz PLNGb.wav grosze PLNGc.wav - groszy PLNZa.wav złoty PLNZb.wav złote PLNZc.wav - złotych PLN1Ka.wav tysiąc PLN1Kb.wav tysiące PLN1Kc.wav - tysięcy PLN1Ma.wav milion PLN1Mb.wav miliony PLN1Mc.wav - milionów PLN0.wav, PLN1.wav, PLN2.wav, PLN3.wav, PLN4.wav, PLN5.wav, PLN6.wav, PLN7.wav,PLN8.wav, PLN9.wav PLN10.wav, PLN11.wav, PLN12.wav, PLN13.wav, PLN14.wav,PLN15.wav, PLN16.wav, PLN17.wav, PLN18.wav, PLN19.wav PLN20.wav, PLN30.wav, PLN40.wav, PLN50.wav, PLN60.wav, PLN70.wav, PLN80.wav, PLN90.wav PLN100.wav, PLN200.wav, PLN300.wav, PLN400.wav, PLN500.wav, PLN600.wav, PLN700.wav, PLN800.wav, PLN900.wav

float1=99.99 gosub=odtworz_cene_produktu play_curr (float1) wait_play return play_link ('plik1.wav','plik2.wav','plik3.wav'... ) - łączy nagrania i odtwarza razem label=kobieta str1='szanowna_pani.wav' goto=powitaj label=mezczyzna str1='szanowny_panie.wav' goto=powitaj label=powitaj play_link (str1,'oferta.wav') wait_play dial_dtmf (zmienna_str) - wybierz numer w dtmf-ie ( Uwaga! Wymaga plików 1dtmf.wav itd. w katalogu komunikatów ) Uwaga! W katalogu komunikatów muszą znajdować się pliki z próbkami dtmf-u 0dtmf.wav, 1dtmf.wav, 2dtmf.wav, 3dtmf.wav, 4dtmf.wav, 5dtmf.wav, 6dtmf.wav, 7dtmf.wav, 8dtmf.wav, 9dtmf.wav, *dtmf.wav, #dtmf.wav str1='108' gosub=przelaczenie label=przelaczenie dial_sys (b_flash300ms) // centrala wymaga chwili czasu, aż będzie w stanie odbierać cyfry po flashu timer1=500 wait_timer1 dial_dtmf (str1) wait_play return Sterowanie nagrywaniem record_on record_off - uruchom nagrywanie - zakończ nagrywanie record_on timer1=10000 wait_timer1 record_off rec_pause_on rec_pause_off - wstrzymaj nagrywanie - uruchom nagrywanie clr_dtmf record_on label=petla if (dtmf~'1') gosub=nagrywanie_start if (dtmf~'0') gosub=nagrywanie_stop if (dtmf~'#') goto=nagrywanie_koniec goto=petla label=nagrywanie_start rec_pause_on clr_dtmf

return label=nagrywanie_stop rec_pause_off clr_dtmf return Komunikacja z interfejsem TAPI lub CTI centrali Zmienne: cti_con_type - typ połączenia : 0 - ext<->ext 1 - ext<->co 2 - co<->co cti_con_ext1 - numer dołączony 1 cti_con_ext2 - numer dołaczony 2 cti_con_co1 - port dołączony 1 cti_con_co2 - port dołaczony 2 cti_con_time cti_con_dir cc4_ext cc4_con Instrukcje: cti_ext_on (nr_wewnętrzny) - aktualny czas trwania połączenia - kierunek połączenia : 0 - wychodzące 1 - przychodzące - zwraca numer wewnętrzny przypisany do kanału CC4 - zwraca nazwę linii miejskiej przypisaną do kanału - zajęcie wewnętrznego hook_on cti_ext_on (cc4_ext) cti_ext_off (nr_wewnętrzny) - zwolnienie wewnętrznego hook_off cti_ext_on ('101') cti_ext_dial (nr_wewnętrzny,cyfry) - wybranie cyfr hook_on cti_ext_on (cc4_ext) timer1=1000 wait_timer1 cti_ext_dial (cc4_ext,'9,0618358600') timer1=60000 label=czekaj if (timer1=0) goto=rozlacz if (cti_ext_state {cc4_ext}<>2) goto=czekaj play_on ('Informacja.wav') wait_play label=rozlacz hook_off cti_ext_off {cc4_ext) cti_ext_state {nr_wewnętrzny} - stan numeru wewnętrznego stany : 0 - wolny 1 - zajęty 2 - połączony 3 dzwoni Uwaga! w zmiennych będą dostępne dalsze informacje cti_ext_numb cti_ext_ddi - zmienna str numer wybrany lub clip - zmienna str numer ddi lub wzywany

if (cti_ext_state {cc4_ext}=3) goto=odbierz restart label=odbierz if (cti_ext_numb='0618358600') goto=klient_specjalny goto=klient_zwykły lub if (cti_ext_state {cc4_ext}=3) goto=odbierz restart label=odbierz if (cti_ext_ddi='100') goto=infolinia_0801xxx100 if (cti_ext_ddi='200') goto=infolinia_0801xxx200 if (cti_ext_ddi='300') goto=infolinia_0801xxx300 goto=infolinia_domyslna cti_co_state {nr_portu} - stan portu miejskiego stany : 0 - wolny 1 - zajęty 2 - połączony 3 - dzwoni if (cti_co_state {01}<>0) info ('Linia zajeta') cti_new_connect - odczytuje informacje o nowym połączeniu w centrali (cti ) stany : False - brak informacji True - informacja w zmiennych aktualizuje zmienne : cti_con_type;cti_con_ext1;cti_con_ext2;cti_con_co1;cti_con_co2;cti_con_time;cti_con_dir cti_ext_connect {nr_wewnętrzny} - odczytuje informacje o połączeniu dla wewnętrznego stany : False - brak informacji ( połączenia ) True - informacja w zmiennych ( jest połączenie ) cti_co_connect {nr_portu} - odczytuje informacje o połączeniu dla portu miejskiego stany : False - brak informacji ( połączenia ) True - informacja w zmiennych ( jest połączenie ) cti_ext_exec (nr_wewnętrzny,cyfry,akcja) - wybranie cyfr, transfer, hold itp. b_drop = 0 - rozłączenie po tapi b_ansfer = 1 - odebranie po tapi b_dial = 2 - wybranie numeru po tapi b_hold = 3 - hold po tapi b_unhold = 4 - unhold po tapi b_park = 5 - park po tapi b_unpark = 6 - unpark po tapi b_trans_set = 7 - przygotowanie transferu po tapi b_trans_comp = 8 - zakończenie transferu po tapi hook_on cti_ext_on (cc4_ext) timer1=500 wait_timer1 cti_ext_exec (cc4_ext,'9,0618358600',b_dial) Współpraca z bazą danych Uwaga! Parametry połączenia z serwerem MySQL są definiowane w ustawieniach R4. sql_connect sql_create_db ('nazwa bazy') - dołączenie do bazy danych - utworzenie bazy danych

sql_select_db ('nazwa bazy') sql_drop_db ('nazwa bazy') sql_close - wybranie pazy danych - usunięcie bazy danych - odłączenie od bazy danych sql_connect sql_select_db ('ZETKOM') sql_quwery: tutaj zapytanie/polecenie SQL - wykonuje polecenie/zapytanie sql {var1} {str1} - tak wpisane zmienne zostaną zamienione na wartości zmiennych sql_first sql_next sql_prior sql_last is_sql sql_fieldscount sql_rowscount sql_field_var {numer pola} sql_field_str {numer pola} sql_field_float {numer pola} - ustawia na pierwszy wiersz odpowiedzi - następny wiersz odpowiedzi - poprzedni wiersz odpowiedzi - ostatni wiersz odpowiedzi - czy jest połączenie z bazą danych bool - zwraca ilość pól odpowiedzi var - zwraca ilość wierszy odpowiedzi var - zwraca pole jako zmienną var - zwraca pole jako zmienną str - zwraca pole jako zmienną float sql_connect sql_select_db ('ZETKOM') label=czekaj_na_polaczenie if (cti_ext_state{cc4_ext}=3) goto=odbierz goto=czekaj_na_polaczenie label=odbierz sql_quwery:select zapowiedz FROM klienci WHERE numer='{cti_ext_numb}' LIMIT 1; if (sql_rowscount=0) goto=zapowiedz_domyslna play_on (sql_field_str {0}) goto=zapowiedz label=zapowiedz_domyslna play_on ('Powitanie standartowe') label=zapowiedz wait_play lub // łączenie na grupę sql_quwery:select numer FROM grupa WHERE zalogowany='1' AND rozmawia='0' ORDER BY rozmawial DESC LIMT 1; if (sql_rowscount=0) goto=grupa_zajeta str1=sql_field_str {0} sql_quwery:update SET rozmawial=current_timestamp(),rozmawia='1' WHERE numer='{str1}'; cti_ext_exec (cc4_ext,str1,b_trans_set) timer1=1000 wait_timer1 cti_ext_exec (str1,'',b_trans_comp)