Klient SIP (VoIP softphone) dla Windows
Prosty klient SIP oparty o projekt re/rem/baresip udostępniany przez creytiv.com na bardzo liberalnej licencji.
Najnowsze archiwum release: tSIP_0_3_06_bin.zip (wersja podstawowa, bez obsługi wideo).
Aplikacja konsolowa
Bezpośredni port baresip dla Turbo C++ 2006 Explorer.
bsip_tc_20111215.7z - tylko kod źródłowy
Aplikacja graficzna
Klient SIP o podstawowej funkcjonalności (minimalny funkcjonalny podzbiór re/rem/baresip) ale pozbawiony zależności od zewnętrznych bibliotek i łatwy do skompilowania. Program jest przenośny i korzysta z ustawień przechowywanych w lokalnym pliku JSON. Pliki programu zajmują ~8,6 MB przestrzeni dyskowej.
- Initial release: Version 0.1
tSIP_0_1_src.7z (435 kB)
- 2012.01.11 Drobne poprawki
tSIP_0_1_1_bin.7z
tSIP_0_1_1_src.7z- zmiana sposobu dowiązania projektów bibliotecznych (#pragma link "re.lib", ścieżka przeszukiwania bibliotek uzależniona od konfiguracji),
- FIXED: błędy typu Access Violation przy uruchamianiu lub restarcie wskutek zmiany konfiguracji,
- dodana brakująca obsługa parametrów transport i expires konfiguracji serwera rejestracyjnego,
- ignorowanie stale=FALSE (traktowanie zawsze jak stale=TRUE) błędnie wysyłanego przez jeden z serwerów testowych z wiadomością SIP/401 i powodującego okresową utratę rejestracji.
- 2012.01.16 tSIP_0_1_2_bin.7z,
tSIP_0_1_2_src.7z
- źródła re/rem/baresip uaktualnione do wersji 0.4,
- winwave.c: usunięty drobny wyciek pamięci,
- dodany moduł baresip portaudio i wymagana biblioteka PortAudio v19/DirectSound linkowana w sposób statyczny; PortAudio jest w tej wersji domyślnym interfejsem audio, WaveIn/WaveOut jest pozostawiony jako alternatywa w konfiguracji,
- skrócenie wyświetlanego URI połączenia i rejestracji (usuwane mało istotne elementy URI).
- 2012.01.28 tSIP_0_1_3_bin.7z,
tSIP_0_1_3_src.7z
- dodany moduł speex i statycznie linkowana biblioteka,
- dodana funkcja logowania wysyłanych i odbieranych wiadomości SIP,
- ua_find(): w przypadku braku możliwości dopasowania przychodzącej wiadomości po nagłówku Contact wykonywane jest także porównanie z AOR ze względu na możliwe problemy z wieloma serwerami (problem jak Nokia: Problems with incoming VoIP 3.x calls).
- 2012.04.28 tSIP_0_1_4_bin.7z,
tSIP_0_1_4_src.7z
- re/rem/baresip uaktualnione do wersji 0.4.1,
- GUI: dodane auth username do konfiguracji,
- GUI: poprawiony problem z chwilowym zamrożeniem interfejsu użytkownika przy otwieraniu okna logowania jeżeli aplikacja pracowała przez długi czas.
- 2012.05.10 tSIP_0_1_5_bin.7z,
tSIP_0_1_5_src.7z
- dodany moduł gsm gsm baresip i statycznie linkowana biblioteka kodeka,
- dodany moduł kodeka G.726-32 i sam kodek ze starszej wersji SpanDSP (copyright Sun Microsystems i Steve Underwood, public domain),
- dodana konfiguracja (włącz/wyłącz) poszczególnych kodeków.
- 2012.07.22 tSIP_0_1_6_bin.7z,
tSIP_0_1_6_src.7z
- dodane ustawienie adresu lokalnego - ekwiwalent ustawienia "sip_listen" baresip, ustawienie może być wymagane na komputerach z więcej niż jednym interfejsem sieciowym dla określenia interfejsu który ma zostać użyty do nasłuchu.
- 2013.11.20 tSIP_0_1_7_bin.7z,
tSIP_0_1_7_src.7z
- wersja programu obsługująca równocześnie wiele kont i wiele połączeń została wydzielona jako osobna aplikacja (mtSIP),
- aktualizacja re (0.4.5), rem (0.4.4), baresip (0.4.6),
- okno logu: dodany zapis do pliku (menu kontekstowe) i ustawienie ciągłego logowania do pliku,
- dodany przycisk re-rejestracji (wymuszenie natychmiastowego ponawiania rejestracji przydatne dla przyspieszenia pracy po restarcie serwera rejestracyjnego),
- usunięte zamrożenie interfejsu użytkownika przy zamykaniu aplikacji w trakcie trwania rejestracji w sytuacji gdy serwer rejestracyjny nie odpowiada,
- funkcja auto-answer z definiowanym kodem odpowiedzi (auto-answer/auto-hangup/DND w jednym),
- historia połączeń (bardzo uproszczona),
- dodany przycisk redial,
- wykonywanie połączeń: założenie, że jeżeli wprowadzono przedrostek "sip:" nie ma potrzeby dodawania domeny uri (poprzednio: brak możliwości dzwonienia na uri typu sip:192.168.1.11).
- 2014.03.19 tSIP_0_1_8_bin.7z,
tSIP_0_1_8_src.7z
- kod baresip przeniesiony do osobnej statycznie linkowanej biblioteki dla uniknięcia problemów z powolną zbędną rekompilacją przez TC++,
- dialpad: dodane tony A, B, C, D,
- dodany przycisk Flash (wysyłający DTMF event),
- dodana funkcja Hold,
- dodana funkcja blind transfer.
- 2014.05.27 tSIP_0_1_9_bin.7z,
tSIP_0_1_9_src.7z
- dodany panel Speed Dial / BLF (subskrypcja application/dialog-info+xml).
- 2014.06.01 tSIP_0_1_10_bin.7z,
tSIP_0_1_10_src.7z
- FIXED: brak wymogu wprowadzania hasła dla konta,
- FIXED: FLASH nie jest już wyświetlany jako R w trakcie wybierania,
- FIXED: niespójny stan aplikacji przy restarcie w trakcie trwania połączenia,
- [Enter] w polu numeru rozpoczyna połączenie,
- automatyczne powtarzanie dla przycisku "backspace".
- 2014.08.07 tSIP_0_1_11_bin.7z,
tSIP_0_1_11_src.7z
Dodany nagłówek Accept do wiadomości SUBSCRIBE. Jakkolwiek nie powinien on być wymagany (RFC6665, 3.1.3), Asterisk 11.9.0 odrzuca takie wiadomości dla Event: dialog z komunikatem: WARNING[14547]: chan_sip.c:27847 handle_request_subscribe: SUBSCRIBE failure: no Accept header: pvt: stateid: -1, laststate: 0, dialogver: 0, subscribecont: '', subscribeuri: ''. Podziękowania dla Barry'ego Mercera za zgłoszenie. - 2014.09.27 tSIP_0_1_12_bin.7z,
tSIP_0_1_12_src.7z
- dodany WebRTC Acoustic Echo Canceller jako biblioteka statyczna,
- wybór AEC: none/Speex/WebRTC,
- poprawiony problem z jakością dźwięku dla wejścia WaveIn (kolejność waveInUnprepareHeader()).
- 2014.10.03 tSIP_0_1_13_bin.7z,
tSIP_0_1_13_src.7z
- niezależny wybór modułu i urządzenia audio dla wejścia audio, wyjścia audio i wyjścia dla sygnałów dzwonienia.
- 2014.10.05 tSIP_0_1_14_bin.7z,
tSIP_0_1_14_src.7z
- prosta książka telefoniczna,
- kod json-cpp przeniesiony do osobnej biblioteki statycznej,
- poprawiony tekst statusu po zmianie konfiguracji na konto bez rejestracji,
- dodane CALL_STATE_OUTGOING, UA_EVENT_CALL_OUTGOING (informacja zwrotna przed kontaktem z drugą stroną przy połączeniu wychodzącym),
- dodane CALL_EVENT_TRYING, UA_EVENT_CALL_TRYING (informacja po otrzymaniu odpowiedzi SIP/100).
- 2014.10.16 tSIP_0_1_15_bin.7z,
tSIP_0_1_15_src.7z
- poprawiony wybór urządzenia wyjściowego audio dla modułu winwave output (otwierane było zawsze urządzenie domyślne),
- tray icon, File/Minimize to tray, "X" minimalizuje do traya,
- ustawienia: Start minimized to tray,
- tekst statusu jako tray hint,
- wyczyszczone: duplikacja kodu Hangup()/CALL_STATE_CLOSED,
- proste okno powiadamiania o nowym połączeniu, dodane powiązane ustawienia.
- 2014.11.02 tSIP_0_1_16_bin.7z,
tSIP_0_1_16_src.7z
- usunięte użycie str_error z odpowiedzi SIP (przy re-INVITE zawierającym wyłącznie media image generowana odpowiedź zawierała "Unknown error" i pustą linię generując błąd składni),
- poprawione drobne błędy kompilacji: nieusunięty nieużywany moduł z webrtc.lib, nie wszystkie podprojekty dołączone do głównej grupy projektów reference to missing module with webrtc, not all projects included in main project group,
- poprawiony brak sygnałów dzwonienia gdy katalog roboczy jest inny niż katalog programu (np. przy uruchomieniu programu z pliku wsadowego poprzez start softphone01\tSIP.exe),
- wyczyszczona ikona BLF po usunięciu subskrypcji BLF dla danego panelu,
- ustawienia: opóźnienie dla auto answer z możliwością ustawienia zakresu z którego losowany jest czas (fuzzing).
- 2014.11.23 tSIP_0_1_17_bin.7z,
tSIP_0_1_17_src.7z
- poprawiona enumeracja urządzeń audio w oknie ustawień,
- skalowanie GUI (główne okno),
- intercom/paging (niezależny wybór urządzenia audio wykorzystywanego przy przychodzącym INVITE z nagłówkiem Call-Info z answer-after),
- winwave: usunięty wyciek uchwytów (wynikający z wywołania waveInUnprepareHeader po waveInClose),
- konfigurowalne przyciski (w podobny sposób do oferowanego np. przez telefony Yealink),
- ustawienia: podwójna szerokość panelu speed dial.
- 2014.11.29 tSIP_0_1_18_1_bin.7z,
tSIP_0_1_18_1_src.7z
- dodatkowa konfiguracja przycisków BLF: niezależny wybór numeru dla dzwonienia i numeru subskrybowanego oraz uzależnienie numeru wybieranego od stanu obiektu; funkcja może być traktowana jako uogólniona funkcja "Call pickup"
- nowa funkcja / typ przycisku: unsolicited MWI
- nowa funkcja / typ przycisku: MUTE
- 2014.12.06 tSIP_0_1_19_bin.7z, tSIP_0_1_19_src.7z
- 2015.01.04 v0.1.21
- poprawka do obsługi linii komend gdy nie została znaleziona poprzednia instancja
- ustawienia: tryb w którym widoczna jest tylko konsola - przewidziany jako uzupełnienie telefonu biurkowego
- domyślny czas rejestracji zmieniony na 0 (brak rejestracji)
- inicjalizacja dzwonka przeniesiona do projektu tSIP.exe (rozwiązuje problem z dzwonkiem słyszalnym przez ułamek sekundy nawet jeżeli auto-answer ma ustawione zerowe opóźnienie
- osobne ustawienia dzwonków dla INVITE z nagłówkiem Alert-Info: info=<Bellcore-dr1> (Bellcore-dr1 ... Bellcore-dr8) i dzwonka domyślnego; ze względu na przenośność pliki wav muszą być umieszczone w katalogu aplikacji
- mute ring (nowa funkcja i typ przycisku)
- ustawienie dla działania przycisku "X" okna głównego: minimalizacja/zamknięcie
- 2015.01.15 tSIP_0_1_22_bin.7z,
tSIP_0_1_22_src.7z
- FIXED: odpowiedź SIP/500 w wersji v0.1.21 przy braku Alert-Info (regresja),
- nowe ustawienie dla przycisku typu BLF: akcja przy wciśnięciu w trakcie rozmowy:
- brak (jak w poprzednich wersjach)
- wysyłanie cyfr DTMF z opcjonalnym dodawanym prefiksem (kodem centrali dla transferu lub R = FLASH)
- blind transfer przy użyciu REFER (ustawienie domyślne)
- (ponownie) więcej kolumn konsoli (do 5 + 1 kolumna "podstawowa") = do 55 przycisków (do 75 po zmniejszeniu wysokości przycisków; drobny refactoring dla ułatwienia przyszłego rozszerzania konsoli,
- informacja o wersji: dodany opis pliku (wykorzystywany np. przez Private Firewall, Process Explorer).
- 2015.01.19 tSIP_0_1_23_bin.7z,
tSIP_0_1_23_src.7z
-
drobne usprawnienia historii połączeń:
- zapisywanie tylko części user z URI połączenia przychodzącego
- rozmiar zwiększony do 1000 wpisów
- usunięte pomijanie zduplikowanych numerów
- zapis czasu trwania połączenia
- ikony reprezentujące kierunek połączenia
-
ustawienia: skróty
- ukrycie aplikacji
- answer/hangup
- ekwiwalent wciśnięcia konfigurowalnego przycisku konsoli
- ustawienia: szerokość kolumny konsoli
-
drobne usprawnienia historii połączeń:
- 2015.01.31 tSIP_0_1_24_bin.7z,
tSIP_0_1_24_src.7z
- naprawione działanie trybu konsoli
- przełączanie do/z trybu konsoli bez restartu
- log: dodane znaczniki czasu do logu treści wysyłanych/odbieranych wiadomości
- globalne (działające także gdy aplikacja nie jest ukryta) skróty klawiszowe; ze względu na możliwe problemy ze znalezieniem unikalnych kombinacji klawiszy wskazane jest użycie skrótów globalnych głównie do podstawowych funkcji jak przywołanie/ukrycie okna i odebranie/zakończenie połączenia
- 2015.02.07 tSIP_0_1_25_src.7z
- opcje kompilacji: zmiana zestawu instrukcji na Pentium Pro dla wszystkich projektów
- TimeCounter.h: narzędzie do pomiaru czasu wykonywania na potrzeby testowe
- przenoszenie focusa na pole edycyjne numeru po uruchomieniu i po przywołaniu aplikacji (np. przy użyciu globalnego skrótu, pozwalając na natychmiastowe wybieranie numeru)
- nowa akcja dla skrótów klawiszowych: redial
- fixed: niezainicjowane ustawienia przy tworzeniu nowego skrótu klawiszowego (często domy?lnie zaznaczony typ globalny skrótu)
- fixed: halt w pętli derejestrującej skróty globalne
- książka telefoniczna: dodane pole notatki
- wyskakujące okno notatki skrótu (przy połączeniu wychodzącym i/lub przychodzącym jeżeli notatka nie jest pusta); zapis rozmiaru i pozycji okna w konfiguracji
- nowy typ przycisku: ręczne wywołanie okna notatki kontaktu
- 2015.02.18 tSIP_0_1_25_1_bin.7z,
tSIP_0_1_25_1_src.7z
- fixed regression (0.1.25): wyjątek "Cannot focus disabled or invisible window" przy włączonym uruchamianiu do traya
- Branding.[h|c] - moduł z nazwą aplikacji i protokołu dla zmniejszenia różnic między gałęziami
- 2015.02.28 tSIP_0_1_26_bin.7z,
tSIP_0_1_26_src.7z
- (bardzo uproszczone) nagrywanie rozmów
- ustawienia: przełącznik on/off (wszystkie połączenia nagrywane automatycznie po włączeniu)
- zapis plików nagrań do podkatalogu \recordings
- dane zawarte w nazwie pliku: data, czas, kierunek połączenia, numer/URI rozmówcy zakodowany w base64
- format zapisu: WAV, oba kierunki zmiksowane do 1 kanału, PCM 8000sps, 16bit (~55MB na godzinę)
- (bardzo uproszczone) nagrywanie rozmów
- 2015.03.04 tSIP_0_1_27_bin.7z,
tSIP_0_1_27_src.7z
- możliwość wyłączenia i całkowitego ukrycia funkcji nagrywania bez rekompilacji poprzez zmianę/usunięcie ciągu "RECORDING_ENABLED" przy użyciu edytora zasobów
- okno ustawień można zamknąć przez wciśnięcie Esc
- nowy typ akcji dla skrótów klawiszowych: dzwonienie na numer zawarty w schowku (możliwowe użycie do integracji np. z przeglądarką poprzez zdefiniowanie skrótu globalnego
- fixed: brak działania skrótów globalnych dla Win Vista i wcześniejszych systemów wskutek użycia flagi MOD_NOREPEAT; eliminacja powtórzeń (timer 1s) dla starszych systemów na poziomie aplikacji
- ustawienia: możliwość przywrócenia zminimalizowanej aplikacji przy połączeniu przychodzącym
- ustawienia: możliwość przywołania okna powiadomienia przy połączeniu wychodzącym (użyteczne przy dzwonieniu z użyciem skrótu globalnego lub linku protokołu skojarzonego z aplikacją
- 2015.04.11 tSIP_0_1_28_bin.7z,
tSIP_0_1_28_src.7z
- implementacja systemu pluginów dla współpracy ze sprzętowymi telefonami; implementacja interfejsu dla telefonu EX-03 (aka @phone), prawdopodobnie kompatybilnego także z modelem EX-02 i kilkoma innymi
- FIXED: niewłaściwy parametr (branding) w linkach protokołu
- protocol handler: dodany parametr "ANSWER"
- 2015.04.16 tSIP_0_1_29_bin.7z,
tSIP_0_1_29_src.7z
- FIXED: chowanie aplikacji do traya przy użyciu przycisku "X" powodowało wyrejestrowanie globalnych skrótów oraz zamknięcie modułu pluginów
- 2015.05.31 tSIP_0_1_30_bin.7z,
tSIP_0_1_30_src.7z
- FIXED: regresja: historia połączeń nie zachowywana przy wyłączaniu komputera (WM_ENDSESSION handler)
- poprawiona obsługa sytuacji usunięcia pluginu który nie został wyłączony
- kontakty: import CSV
- 2015.06.06 tSIP_0_1_31_bin.7z,
tSIP_0_1_31_src.7z
- popup notatki kontaktu i okno edycji kontaktu: rozpoznawanie adresów URL i otwieranie w domyślnej przeglądarce przy kliknięciu
- nagrywanie: możliwość zmiany katalogu z nagraniami na inny niż względny; przykład zastosowania: zapis nagrań we wspólnym katalogu sieciowym
- okno informacji o programie: dodana lokalizacja pliku wykonywalnego, otwarcie katalogu programu po kliknięciu
- dodany czas trwania połączenia w stanie "Connected"
- 2015.07.04 tSIP_0_1_33_bin.7z,
tSIP_0_1_33_src.7z
- nagrywanie: numer/URI w nazwie pliku kodowany z użyciem base64 ze zmienionym alfabetem
- nowy typ przycisku: HTTP query - otwarcie URL (np. wyszukiwarki lub firmowego interfejsu bazy danych) z numerem z ostatniego (lub bieżącego) połączenia przychodzącego przekazywanym jako argument; domyślnie użyte google
- ustawienia: dodana konfiguracja zakresu lokalnych portów RTP/RTCP
- 2015.07.06 RecordViewer - przeglądarka nagrań
- 2015.08.08 tSIP_0_1_34_bin.7z,
tSIP_0_1_34_src.7z
- dodana obsługa subskrypcji presence
- 2015.08.15 tSIP_0_1_35_bin.7z,
tSIP_0_1_35_src.7z
- przycisk/lampka Presence współdzieli z BLF zachowanie dla wciśnięcia w trakcie rozmowy (przekazanie połączenia bez anonsowania lub wybieranie kodu DTMF)
- nowy typ przycisku: UNREGISTER
- nagrywanie: opcja zapisu połączenia jako pliku stereofonicznego - strony połączenie stanowią odrębne kanały; użyteczne m.in. do testów echa oraz opóźnienia; uwaga: podwaja rozmiar wynikowych plików (efektywnie 256kbps, 110MB/h)
- 2015.08.28 tSIP_0_1_36_bin.7z,
tSIP_0_1_36_src.7z
- poprawiona regresja (0.1.35) przy nagrywaniu w trybie pojedynczego kanału
- dodany zaadaptowany do Win32 moduł baresip aufile (plik wave jako źródło audio)
- moduł przezentowany obok WaveIO i PortAudio na liście wyboru źródła
- wymaga pliku audio w formacie S16LE, 1ch, 8kSps, ulokowanego w katalogu aplikacji
- połączenie jest rozłączane przy końcu pliku audio
- moduł pozwala wykonywać połączenia przy braku fizycznego urządzenia audio
- wraz z funkcją auto answer i nagrywaniem moduł może być wykorzystywany np. do realizacji poczty głosowej
- ACTION_SHOWWINDOW (parametr linii komend SHOWWINDOW) - przywrócenie aplikacji z traya
- nowe ustawienie w grupie "General": single instance (przeniesienie poprzedniej instancji aplikacji zamiast uruchamiania drugiej); używa akcji SHOWWINDOW i tego samego mechanizmu co click-to-call
- 2015.09.02 tSIP_0_1_36_1_bin.7z
- FIXED: problem z ustawieniami plików dzwonków i źródła audio (case sensitivity)
- 2015.09.11 tSIP_0_1_36_2_bin.7z
- FIXED: typ urządzenia wejściowego w domyślnej konfiguracji ustawiony był na plik wave podczas gdy właściwy plik nie był wybrany co skutkowało natychmiastowym rozłączaniem połączeń
- FIXED: znaki NUL (0) znajdowały się w logu zapisanym do pliku na końcu każdego wiersza
- 2015.10.24 Plugin umożliwiający uruchamianie prostych skryptów w języku Lua
- 2015.12.05 tSIP_0_1_37_bin.7z,
tSIP_0_1_37_src.7z
- nowy typ przycisku uruchamiający wskazaną aplikację; może być użyty jako skrót do aplikacji RecordViewer lub np. notepada - numer z bieżącego lub poprzedniego połączenia może być przekazany jako składnik linii komend do aplikacji
- 2016.01.23 tSIP_0_1_38_bin.7z, tSIP_0_1_38_src.7z
- nowa funkcja: RTP streaming (paging, tylko strona nadawcza)
- nowy typ przycisku
- adres docelowy: unicast lub multicast (np. 192.168.1.10:4000) w polu Number przycisku
- każdy przycisk uruchamiający strumieniowanie może mieć przypisany osobny plik wave jako >źródło d>więku; jeżeli plik wave nie jest zdefiniowany użyte jest domy?lne >źródło d>więku z konfiguracji (np. mikrofon)
- uwaga: wersja obsługuje strumieniowanie tylko z kodekiem G.711a i musi być on włączony w konfiguraci
- rozszerzony interfejs dla pluginów z zachowaniem wstecznej kompatybilno?ści (funkcje eksportowane opcjonalnie przez biblioteki DLL)
- SetPagingTxCallback - ustawia funkcję do wywołania przez DLL dla uruchomienia strumieniowania
- SetPagingTxState - przekazanie do DLL informacji o rozpoczęciu/zakończeniu strumieniowania
- ustawienia konta: dodane outbound proxy (równoważne parametrowi outbound1 baresip dla konta ale - podobnie jak z serwerem SIP - prefix sip: nie powinien być zawarty)
- drobne uporządkowanie ustawień konta - rozdzielone
- ustawienia podstawowe (serwer, UDP/TCP, user, password i parametr Expires/wyłączenie rejestracji
- ustawienia opcjonalne
- nowa funkcja: RTP streaming (paging, tylko strona nadawcza)
- 2016.02.02 tSIP_0_1_39_bin.7z, tSIP_0_1_39_src.7z
- poprawiona regresja (0.1.34): brak działania MWI
- obsługa NOTIFY z "Event: talk" (zdalne odebranie połączenia dla współpracy z bliżej nieokreślonym systemem CRM używającym AMI asteriska do sterowania softfonem), nowe ustawienie w zakładce "Call"
- 2016.02.13 tSIP_0_1_40_bin.7z, tSIP_0_1_40_src.7z
- konfiguracja programowalnych przycisków przesunięta do osobnego pliku (tSIP_buttons.json) dla uniknięcia przepisywania dużej tablicy JSON przy każdym zamykaniu aplikacji i potencjalnego ułatwienia współdzielenia konfiguracji przycisków między użytkownikami lub instancjami programu
- maksymalna liczba kolumn z programowalnymi przyciskami zwiększona z 5 do 12 - do 132 przycisków programowalnych (przy zmniejszonej wysokości: do 180); wykorzystanie wszystkich 12 kolumn wymaga ekranu o szerokości przynajmniej 1440 px (przy domyślnej szerekości kolumny)
- FIXED: problem przemieszaniem kolumn przy zmianie ilości kolumn bez restartu
- dodany przycisk "Reset all" do okna programowania przycisku
- drobne uporządkowanie okna programowania przycisku; wydzielenie ustawień wizualnych
- dodana konfiguracja koloru tła przycisku dla wizualnego grupowania przycisków
- FIXED: przy kliknięciu przycisku o typie Disabled generowany był log: "Unhandled BTN type = some_big_number"
- przycisk typu SpeedDial podobnie jak BLF i Presence korzysta z ustawień akcji w trakcie połączenia (DTMF lub transfer)
- 2016.02.24 tSIP_0_1_41_bin.7z, tSIP_0_1_41_src.7z
- FIXED: ciało wiadomości przychodzącej nie było wyświetlane przy logowaniu
- dodana akcja (= nowy możliwy skrót klawiaturowy): wł/wył konsoli
- zmodyfikowane okno ustawień (drzewo kategorii)
- wydzielone ustawienia sieciowe (bind address, RTP ports)
- rozpoznawana linia typu "Polycom" Call-Info: Answer-After=X w przychodzącej wiadomości INVITE (obok poprzednio obsługiwanej Call-Info: <uri>;answer-after=X)
- nowe ustawienie konta, "answer any"; po włączeniu konto traktowane jest jako "lokalne" i używane do obsługi wiadomości które normalnie spotkałyby się z odpowiedzią SIP/404 ze względu na brak możliwości dopasowania konta do obsługi; ustawienie przeznaczone głownie do celów testowych jak symulacja centrali obsługującej dowolne połączenie przychodzące
- 2016.03.12 tSIP_0_1_42_bin.7z, tSIP_0_1_42_src.7z
- [Display Name] jest używane jako linia opisu jeżeli numer nie został znaleziony w książce telefonicznej
- nowe ustawienie: pokazuj tylko część user (jeżeli jest obecna) URI jako CLIP
- Contacts: filtrowanie uwzględnia też numery telefonów/URI
- dodane filtrowanie do historii połączeń
- historia połączeń zapisuje display name dla przychodzących połączeń
- historia połączeń wyświetla nazwę kontaktu jeżeli jest dostępna, w drugiej kolejności display name, numer/URI przy braku
- FIXED: memleak: contact_any
- dodany kodek G.722; uwaga: WebRTC AEC jest obecnie nieaktywne dla próbkowania 16kHz
- 2016.05.03 tSIP_0_1_43_bin.zip, tSIP_0_1_43_src.7z
- dodana konfiguracja bufora jittera; zmiana domyślnych ustawień zalecana tylko w przypadkach ekstremalnych jak użycie VoIP poprzez warstwy VPN lub Tor
- nowy typ przycisku: script
- 2016.05.13 tSIP_0_1_44_bin.zip, tSIP_0_1_44_src.7z
- poprawiony problem przy "@" w haśle (błąd dekodowania AOR; zmiana sposobu przekazywania hasła)
- wybór kodeka (PCMA/PCMU/G.722) dla funkcji paging; wybrany kodek musi być włączony w konfiguracji
- dodany (opcjonalny) wybór interfejsu sieciowego (baresip: net.ifname) mogący pomóc przy niewłaściwym adresie w liniach SDP "o" i "c" w konfiguracji z wieloma interfejsami; wymagane jest wpisanie pełnego identyfikatora adaptera, jak widoczny w logu przy starcie, wraz z nawiasami ("{012345678-0123-0123-0123-ABCDEF012345678}")
- 2016.05.22 tSIP_0_1_45_bin.zip, tSIP_0_1_45_src.7z
- moduły DLL (podkatalog "modules"); w tym momencie wspierane tylko moduły kodeków
- szablon modułu kodeka G.729 przeznaczony do kompilacji z użyciem Code::Blocks/MinGW
- zmiana ikony w trayu przy nieodebranym połączeniu lub wiadomości na poczcie (MWI)
- FIXED: możliwy integer overflow i w dalszej kolejności access underrun przy kodowaniu G.711a/u
- 2016.05.29 tSIP_0_1_46_bin.zip, tSIP_0_1_46_src.7z
- drobne poprawki związane ze skalowaniem GUI i obrazkami przycisków programowalnych
- zmiana obsługi obrazków przycisków programowalnych większych niż 16x16
- przezroczystość etykiet opisowych przycisków programowalnych - obrazki mogą być użyte jako tło
- dodany wybór tła (bitmapy) dla dialpada
- wyłączone TabStop dla przycisków dialpada 0...9*#
- FIXED: memleak przy restarcie lub zakończeniu pracy stosu w trakcie gdy uruchomieniony jest paging
- 2016.06.02 tSIP_0_1_46_3_bin.zip, tSIP_0_1_46_3_src.7z
- branding: nazwa aplikacji i domyślna nazwa dla protocol handler ("click-to-call") mogą być zmienione przez edycję zasobów
- FIXED: dla HTTP query używany był pełny SIP URI zamiast numru telefonu
- dodane ustawienie dla HTTP query: możliwość uruchamiania automatycznego przy połączeniu przychodzącym lub po jego odebraniu
- 2016.06.22 tSIP_0_1_47_bin.zip, tSIP_0_1_47_src.7z
- interfejs pluginów: dodana funkcja GetNumberDescription(), (możliwość pobrania opisu z książki telefonicznej dla numeru)
- plugin text-to-speech (mówiący dzwonek)
- 2016.08.24 URL-hit plugin (wysłanie żądania HTTP GET w tle przy przychodzącym połączeniu)
- 2016.09.03 tSIP_0_1_48_bin.zip, tSIP_0_1_48_src.7z
- nowe ustawienie w zakładce "General": "Do not beep when using [Enter] in main window to dial or transfer call" - generowany sygnał dźwiękowy był niezamierzony, ale została pozostawiona możliwość generowania go w charakterze sygnału potwierdzenia
- nowe ustawienie: "History"/"Do not store history to file"
- [BREAKING] ustawienie kodeków z poprzednich wersji nie są zachowywane; PCMU + PCMA ustawiane są jako domyślne po upgrade
- [BREAKING] kodeki z modułów dynamicznych (G.729) wymagają ręcznego włączenia w konfiguracji
- nowy, poprawiony sposób konfigurowania kodeków audio, pozwalający niezależnie włączać/wyłączać kodeki z danego modułu jeżeli moduł ten zarejestrował więcej niż 1 kodek oraz priorytetyzować je
- ustawienie kodeków zostały skojarzone z kontem, ale ze względu na obecne ograniczenie do 1 konta pozostawiona została osobna karta ustawień kodeków w konfiguracji
- przy wyborze kodeka dla funkcji strumieniowania RTP (np. multicastingu) osobne włączenie tego kodeka w ustawieniach nie jest wymagane
- dodany kodek L16 (próbki liniowe)
- L16/44100 dostępny jest na liście kodeków do strumieniowania; uwaga: przy domyślnym ramkowaniu (ptime) 20ms ramki UDP są fragmentowane
- dodane ustawienie ptime do strumieniowania RTP
- RTP timestamps startują od wartości losowej i kilka innych drobnych poprawek z re/rem/baresip
- 2016.10.16 tSIP_0_1_49_bin.zip, tSIP_0_1_49_src.7z
- nowe ustawienie w zakładce "General": własna ikona główna programu (.ico) i bitmapa ikony (.bmp, 16x16) w trayu dla nieodebranego połączenia z podkatalogu /img/; cel: ułatwienie identyfikacji instancji programu przy ich równoczesnej pracy np. w celu obsługi wielu kont
- okno powiadomienia o połączeniu ("Tray Notifier") może mieć przypisaną bitmapę tła
- ustawienia okna powiadomienia przeniesione na osobną stronę ustawień
- nowe ustawienie: "Hide settings" które może być użyte do ograniczenia dostępu użytkownika końcowego do ustawień programu, w szczególności w połączeniu z ograniczeniem praw do zapisu głównego pliku konfiguracji
- 2016.10.23 tSIP_0_1_50_bin.zip, tSIP_0_1_50_src.7z
- obsługa nagłówka Access-URL w przychodzącej wiadomości INVITE - otwieranie strony www o adresie wyspecyfikowanym w wiadomości SIP
- ustawienia ("Integration"): otwieranie ręczne, otwieranie zgodnie z wartością parametru mode w wiadomości, wymuszenie otwierania automatycznego
- nowy typ przycisku: "Access SIP URL" ręczne otwieranie strony
- obsługa nagłówka Access-URL w przychodzącej wiadomości INVITE - otwieranie strony www o adresie wyspecyfikowanym w wiadomości SIP
- 2016.11.05 tSIP_0_1_51_bin.zip, tSIP_0_1_51_src.7z
- RTP timeout (zakładka "Network") - rozłączanie połączeń przy braku odbioru pakietów RTP przez określony czas; poprawiona odporność na problemy sieciowe w przypadku pracy nienadzorowanej aplikacji w trybie auto-answer
- nowe typy przycisków: przełączanie wejścia i wyjścia audio podczas rozmowy ("speakerphone")
- 2016.11.19 tSIP_0_1_52_bin.zip, tSIP_0_1_52_src.7z
- dołączony preprocesor audio z baresip (odszumianie ścieżki mikrofonu bazujące na kodzie speex)
- ustawienia: karta AEC zastąpiona "Audio Processing", łączącą ustawienia AEC i preprocesora audio
- błąd przy dodawaniu filtra do łańcucha nie przerywa dodawania kolejnych filtrów
- onmouseover dla przycisków programowalnych zastąpiony przez onmousedown (zły wygląd na ekranie dotykowym przy niewidocznym kursorze)
- usunięty fokus z przycisków Call/Answer i Hangup buttons
- ustawienia: możliwość wyłączenia menu kontekstowego dla przycisków programowalnych (przypadkowa aktywacja przy pracy z ekranem dotykowym)
- dodane L16/48000 do zestawu kodeków
- ustawienia, logowanie: flush pliku logu przy zapisie, domyślnie wyłączony
- ustawienia, logowanie: limit rozmiaru pliku logu
- ustawienia: dodany przycisk aktualizujący listę pluginów
- 2016.11.26 tSIP_0_1_53_bin.zip, tSIP_0_1_53_src.7z
- FIXED: możliwe dzielenie przez zero w kodzie preprocesora speex
- przełączanie źródła audio działa także z funkcją RTP streaming (paging)
- skrypty Lua (zintegrowane):
- skrypty mogą być wykonywane przy zdarzeniach zmiany stanu połączenia, zmiany stanu pagingu - poprzednio tylko poprzez kliknięcie przycisku z przypisanym skryptem
- nowa strona ustawień z przypisaniem skryptów do zdarzeń
- ScriptExec: mapa kontekstów umożliwiająca równoczesne wykonywanie wielu skryptów
- dodana funkcja SwitchAudioSource (np. SwitchAudioSource("aufile", "test.wav"))
- dodana funkcja SendDtmf (np. SendDtmf("1234*#))
- dodana funkcja BlindTransfer (np. BlindTransfer("123"))
- dodana funkcja GetCallState (zwracająca liczbę zgodną z enum Callback::ua_state_e)
- dodana funkcja IsCallIncoming()
- dodana funkcja GetCallPeer() (zwracająca numer rozmówcy, niezależnie od kierunku połączenia)
- dodana funkcja GetStreamingState() (zwracająca liczbę zgodną z enum Callback::paging_tx_state_e)
- FIXED: dodana brakująca funkcja Sleep(milliseconds)
- dodany zestaw funkcji pozwalający na przekazywanie stanu pomiędzy skryptami lub wykonaniami pojedynczego skrytu:
- SetVariable("name", "value")
- value, isset = GetVariable("name") (zwracająca 2 wartości, isset == 0 jeżeli zmienna o tej nazwie nie została ustawiona)
- ClearVariable("name")
- ClearAllVariables()
- dodane funkcje GetInitialCallTarget() i SetInitialCallTarget(number) pozwalające na użycie softfona do funkcji originate
- settings/Speed Dial: opcja ignorowania notatki presence zwracanej przez serwer
- 2016.12.03 tSIP_0_1_54_bin.zip, tSIP_0_1_54_src.7z
- FIXED: możliwe było wykonanie więcej niż 1 połączenia w tym samym czasie co skutkowało niespójnością stanu aplikacji
- FIXED: konfiguracja WebRTC AEC z pliku ustawień nie była uwzględniana
- Lua: dodana funkcja ShellExecute(), pozwalająca ominąć niedogodność os.execute() polegającą na wyświetlaniu konsoli
- Lua: dodane zdarzenie "on timer"
- 2017.01.06 tSIP_0_1_55_bin.zip, tSIP_0_1_55_src.7z
- możliwość ustawienia własnej wartości nagłówka User-Agent (zakładka "General")
- Lua: dodana funkcja GetRegistrationState() (zwracająca liczbę zgodną z Callback::reg_state_e)
- Lua: dodana funkcja SetTrayIcon("fileFromImgSubdir.bmp"); poprawna obsługa przezroczystości może wymagać poeksperymentowania - w mojej
konfiguracji wymagane były bitmapy o 8-bitowym kolorze
- uwaga: po pierwszym użyciu funkcji tSIP przestaje sterować ikoną automatycznie (zmieniać ją przy połączeniu nieodebranym lub wiadomości na poczcie)
- Lua: dodane zdarzenie "on registration state"
- Lua: zmiana kolejności przeszukiwania ścieżek skryptów dla uniknięcia problemów z CodeGuard w wersji debug
- interfejs pluginów: dodana możliwość ustawiania zmiennych skryptowych przez pluginy
- Lua: dodana funkcja "Answer()"
- Lua: dodana funkcja "MessageBox" - bezpośredni odpowiednik funkcji WinAPI o tej samej nazwie ale z pominiętym parametrem uchwytu do okna
- 2017.01.16 GetIdleTime.zip - plugin ustawiający zmienną "InputIdleTime" dla skryptów Lua, wartość zmiennej odpowiada liczbie sekund braku aktywności użytkownika (brak użycia myszy, klawiatury)
- 2017.01.29 tSIP_0_1_56_bin.zip, tSIP_0_1_56_src.7z
- Lua:
- dodany wybór skryptu "on startup" (uruchamianego jednokrotnie przy starcie)
- dodana funkcja SetButtonCaption(btnId, text)
- dodana funkcja SetButtonDown(btnId, state) - ustawianie stanu wciśnięcia dla przycisku
- dodana funkcja SetButtonImage(btnId, "file.bmp") - ustawienie bitmapy tła przycisku #btnId
- dodana funkcja PluginSendMessageText(dllName, text) - przekazanie parametru/komendy do pluginu
- dodana funkcja srcType, srcTypeIsSet = GetExecSourceType() i srcId, srcIdIsSet = GetExecSourceId(): zestaw funkcji umożliwiający określenie typu i id zdarzenia które spowodowało uruchomienie skryptu; umożliwia użycie jednego pliku skryptu do wielu przycisków i odczyt id przycisku wywołującego w skrypcie
- dodana funkcja InputQuery, dialog umożliwiający wprowadzanie tekstu przez użytkownika, bezpośredni odpowiednik funkcji VCL o tej samej nazwie: text, isAccepted = InputQuery(caption, prompt, defaultText)
- dodana funkcja GetRecordFile() zwracająca nazwę pliku z aktualnym lub ostatnim nagraniem rozmowy
- dodana akcja APP_QUIT dla linii koment ("tsip /tsip=APP_QUIT" możliwe użycie z przeglądarki przez link tsip:APP_QUIT); powoduje zamknięcie poprzedniej instancji programu, ułatwia przeprowadzenie provisioningu poprzez podmianę plików konfiguracyjnych gdy program nie jest uruchomiony
- ukryte etykieta i pole edycyjne "Number" przy edycji przycisku typu "Script"
- Lua:
- 2017.01.29 Plugin CommState - tani konwerter USB-UART jako interfejs łączący softphone ze światem zewnętrznym (GPIO: 2 wyjścia, 4 wejścia dostępne).
- 2017.02.25 tSIP_0_1_56_1_bin.zip: changes for video doorphone function using RTSP network camera
- Lua: aktualizacja do wersji 5.3.4 (ze względu na wsparcie dla operacji bitowych użyteczne przy WinAPI)
- Lua: dodane zdarzenie "on BLF (dialog-info) state" ID (numer) kontaktu który zmienił stan jest przekazywany poprzez GetExecSourceId()
- Lua: dodana funkcja zwracająca numer telefonu i stan BLF kontaktu o danym ID (do użycia w skrypcie zdarzeniowym "on BLF state"): number, state = GetBlfState(contactId)
- Lua: dodany wbudowany moduł "tsip_winapi" grupujący funkcje będące bezpośrednimi odpowiednikami funkcji WinAPI; moduł może zostać zaimportowany przez "require" a zawarte funkcje nie są częścią globalnej przestrzeni nazw
- FindWindow
- SendMessage
- MessageBox (duplikująca w tym momencie identyczną funkcję w przestrzeni globalnej)
- Beep (duplikująca w tym momencie identyczną funkcję w przestrzeni globalnej)
- 2017.03.03 tSIP_0_1_56_2_bin.zip
- [deprecated] dodana opcja uruchamiająca nagrywanie w stanie call progress / early media, dla umożliwienia nagrywania sygnałów i zapowiedzi przekazynych przez operatorów w pasmie
- 2017.03.26 tSIP_0_1_57_bin.zip, tSIP_0_1_57_src.7z
- nowe ustawienie, zastępujące dodane w 0.1.56.2: rozpoczęcie nagrywania może być ustawione jako ręczne (przy użyciu Lua), przy rozpoczęciu rozmowy lub przy early media
- Lua: dodana funkcja ręcznego włączania nagrywania: status = RecordStart(filename, channels), gdzie filename = pełna ścieżka i nazwa pliku wav, channels (1 lub 2) = mono lub stereo (niezależne kanały dla stron rozmowy)
- Lua: dodana funkcja GetExeName(), zwracająca pełną ścieżkę i nazwę pliku aplikacji
- Lua: dodana funkcja GetRecordingState(), pozwalająca sprawdzić czy nagrywanie jest uruchomione
- 2017.04.08 tSIP_0_1_58_bin.zip, tSIP_0_1_58_src.7z
- dodana konfiguracja parametru ptime (zakładka Account tab); zmiana ptime na 10 jest wymagana do uzyskania komunikacji z pjsip/pjsua z użyciem kodowania L16/44100 (ptime = 20 wywołuje PJ_ASSERT_RETURN wewnątrz enkodera L16 pjsip)
- Lua: dodana funkcja ForceDirectories(dir), działająca analogicznie do funkcji VCL o tej samej nazwie ale zwracająca 0 przy powodzeniu - przeznaczona do wywołania przed RecordStart() jeżeli katalog docelowy nie istnieje jeszcze; wymaga pełnej ścieżki, np.: ForceDirectories("D:\\test\\test123")
- okno edycji przycisku może być zamknięte Esc
- usunięty focus, z przycisków dialpadu, i kilku innych elementów (fokus może należeć tylko do elementów edycyjnych)
- cyfry wprowadzane w polu edycyjnym numeru generują znaki DTMF
- usunięta nowa linia po tekscie zwracanym przez strerror()
- linie "Unknown error" w logu np. po normalnym zakończeniu rozmowy przez drugą stronę zamienione na bardziej informacyjne komunikaty
- przyczyna błędu rejestracji (np. 404 Not Found) wyświetlana jest na pasku statusu (może nie mieścić przy długiej nazwie serwera, ale powinna być widzialna gdy konsola jest rozwinięta
- dodany typ zdarzenia skryptu "on dial", skrypt uruchamiany przy wciskaniu klawiszy dialpad lub edycji numeru z użyciem klawiatury; zastosowanie: generowanie lokalnych dźwięków przy wybieraniu
- 2017.06.16 tSIP_0_1_59_bin.zip, tSIP_0_1_59_src.7z
- Lua: dodana funkcja GetCallInitialRxInvite(), przekazująca pełny tekst pierwszego przychodzącego INVITE z połączenia; pozwala na wyodrębnianie z wiadomości linii dowolnego typu w reakcji na połączenie przychodzące w skrypcie "on call state", np. użycie Remote-Party-ID do wyświetlenia dodatkowogo numeru CLIP na jednym z programowalnych paneli/przycisków
- Lua: dodana funkcja description = GetContactName(number) pozwalająca uzyskać opis kontaktu związanego ze wskazanym numerem
- ustawienia: dodana opcja wymuszenia częsci user "Contact" (zamiast domyślnego losowo wyglądającego ciągu)
- Lua: dodana funkcja GetRxDtmf(), zwracająca pojedynczy znak DTMF (lub pusty ciąg) z kolejki odbiorczej; znak jest usuwany z kolejki
- dodana programowa regulacja głośności dla obu kierunków
- 2017.08.27 tSIP_0_1_59_4_bin.zip
- FIXED: niespójny stan aplikacji przy obsłudze przychodzącej wiadomości REFER (połączenie przekazywane)
- dodana podstawowa obsługa out-of-dialog REFER - na potrzeby ANVEO CTI, jako opcja opt-in w zakładce "Calls"; uwaga: w zależności od konfiguracji konieczne może być użycie opcji "Answer any" w konfiguracji konta
- dodany tryb kiosk (grupa ustawień "General", póżniej przeniesiony do "Locking")
- dodane nowe typy przycisku: wywołujący okno ustawień (zablokowany jeżeli opcja "Hide settings" jest użyta), minimalizacja, wywołanie okna logu, zakończenie działania aplikacji
- zwiększony do 500% limit skalowania GUI
- poprawione skalowanie szerokości list książki telefonicznej i historii połączeń
- dodana opcja "Hide mouse cursor" (grupa "General")
- dodana opcja ustawiania 2 linii tekstu dla programowalnych przycisków, np. opis + numer dla przycisku BLF
- 2017.10.11 tSIP_0_1_60_2_bin.zip, tSIP_0_1_60_2_src.7z
- dodane niezależne ustawienie wyjściowego urządzenia audio dla dzwonka
- wersja aplikacji jest przechowywana w pliku konfiguracji dla ułatwienia zachowania spójności przy aktualizacji (kopiowanie ustawienia urządzenia audio "alert" do urządzenia "ring")
- 2017.11.01 tSIP_0_1_60_3_bin.zip
- dodane urządzenia audio "nullaudio" (wejściowe: cisza, wyjściowe: ignorowanie próbek); przeznaczone do użycia na komputerach bez wejścia/wyjścia dźwięku, np. z wejściem mikrofonu z funkcją autosense, maszynach wirtualnych albo po uruchomieniu aplikacji jako usługa
- 2017.11.12 tSIP_0_1_60_4_bin.zip
- dodany parametr "Display"/"Decode Display Name (UTF) to local (ANSI) code page"
- 2017.12.23 tSIP_0_1_61_bin.zip, tSIP_0_1_61_src.7z
- poprawiony błąd związany z transportem TCP - 100% zużycia CPU po rozłączeniu, dodatkowe conn_close(tc, 0) w tcp.c po błędzie recv()
- Settings/Calls: możliwość ustawienia własnych linii nagłówkowych dodawanych do INVITE wychodzącego połączenia (np. Call-Info z answer-after lub Answer-After dla włączenia automatycznego odebrania połączenia przez drugą stronę)
- 2018.04.06 tSIP_0_1_62_bin.zip, tSIP_0_1_62_src.7z
- usunięta z SDP linia "tool" - podejrzewana o powodowanie błędu "488 SDP Parameter Error In SIP Request" error przy dzwonieniu przez operatora t-mobile.de
- ustawienia: dodane skalowanie GUI scaling dla okna powiadamiania w trayu
- dodana funkcja Lua ShowTrayNotifier(description, uri, incoming)
- zdjęty domyślny focus z przycisków okna powiadomienia w trayu
- FIXED: błąd przy ograniczaniu pozycji okna powiadomienia w trayu
- interoperatywność (supervoip.pl plus pewien niemiecki operator): użycie nazwy użytkownika jako domyślnego contact name jeżeli contact name jest pusty (zamiast pseudolosowego contact name bazującego na adresie pamięci)
- dodane hinty do przycisków resetujących poziom głośności
- pozycja okna ustawień zmieniona na screen center
- dodana pozycja menu Settings/Delete call history (natychmiastowe skasowanie historii połączeń i wyczyszczenie combobox)
- okna Log i "About" mogą być zamknięte przy użyciu Esc
- jeżeli połączenie zostało rozłączone z innego powodu niż normalne zakończenie - linia stanu połączenia wyświetla powód (np. "488 Not Acceptable Here", "480 Temporarily Unavailable") przez 8 sekund
- 2018.05.19 tSIP_0_1_62_4_bin.zip
- dodane opecje ukrycia menu "View" i "Help" (ograniczając wraz z opcją ukrycie menu ustawień dostęp dla użytkownika końcowego)
- nowa opcja linii komend: PROGRAMMABLE_BTN_xxx (np. "tSIP.exe /tsip=PROGRAMMABLE_BTN_023") - symulująca wciśnięcie programowalnego przycisku o ID = xxx (0...100+)
- dodana funkcja Lua GetUserName(), zwracająca wartość z konfiguracji - funkcja umożliwia rozróżnienie instancji aplikacji jeżeli wiele instancji używa tego samego zestawu skryptów, np. pobranie listy numerów na które mają być wykonane połączenia z katalogu zawierającego nazwę użytkownika
- FIXED: możliwy brak zatrzymania dzwonka ze względu na hazard między kolejkami control i callback przy natychmiastowym zakończeniu rozpoczętego połączenia wychodzącego
- nowe ustawienia: "Show main form when answering call" i "Hide tray notifier when answering call"
- dodana grupa ustawień "General (2)"
- 2018.07.21 tSIP_0_1_63_bin.zip, tSIP_0_1_63_src.7z
- Lua: dodana funkcja ProgrammableButtonClick(buttonId) - symulacja kliknięcia przycisku
- dodany kod numeryczny do tekstu generowanego przez strerror
- klient rejestracji: ograniczony czas nasycenia / "failwait" maksymalny czas do ponowienia rejestracji zmniejszony z 1800s do 300s (czas jest losowy i rośnie wykładniczo)
- klient subskrypcji: usunięty limit RESUB_FAILC_MAX, dodany "failwait" podobnie do rejestracji z limitem 900s
- 2018.11.12 tSIP_0_1_64_bin.zip, źródło: tSIP-0.1.64.zip
- dodany mechanizm "logrotate"; ustawienia: liczba poprzedzających plików do zachowania (0...5)
- dodane kolejki jako nowy (obok zmiennych) mechanizm łączenia skryptów i pluginów
- dodana funkcja Lua FindWindowByCaptionAndExeName(caption, exeName)
- dodane źródła sxmlc do re
- przyciski BLF (dialog-info+xml) mogą od teraz pokazywać również rozmówcę i kierunek połączenia w drugiej linii opisu (opt-out)
Ta funkcjonalność jest wspierana przez FreeSWITCH and with some issues by FreePBX. - poprawione kilka linii logów
- 2018.11.12 tSIP_0_1_64_1_bin.zip
- FIXED: BLF z FreeSWITCH (brakująca ikona "terminated")
- 2019.01.29 tSIP_0_1_65_bin.zip, source: tSIP_0_1_65_src.7z
- FIXED: niezainicjowana zmienna w module nullaudio
- FIXED: zależność od gsm.lib nie była widoczna w IDE
- linia komend: cel połączenia zaczynający się od "sip:" jest traktowany jak direct IP call
- FIXED: (powtórzone) opóźnione auto-answer gdy wystąpił błąd przy odbieraniu
- dodane opcje ustawienia własnego tytułu aplikacji i własnej nazwy głównego okna
- dodany speex resampler do modułu wejścia audio aufile (odtwarzacza plików wave)
- dodane okno (menu "Tools") do edycji i uruchamiania skryptów (co czyni plugin odpowiedzialny za skryptowanie zbędnym)
- edytor skryptów może być użyty bezpośrednio z okna ustawień do tworzenia nowych skryptów przypisanych do zdarzeń lub edycji obecnych
- przepisane funkcje odczytu ustawień ogólnych i ustawień przycisków - użycie poprzednich wartości jako wartości domyślnych
- dodane funkcje Lua: RefreshAudioDevicesList() i GetAudioDevice()
- dodana funkcja UpdateSettings(jsonText)
- 2019.04.14 source: tSIP_0_1_66_src.7z
- wyodrębnione kilka ustawień do grupy "Locking" (tryb kiosk i inne ustawienia blokujące funcje)
- dodana opcja "Hide Tools menu"
- poprawiona interpretacja ustawienia liczby kolumn (błąd wersji 0.1.65)
- poprawiona wysokość okna głównego dla wyrównania z domyślną wysokością przycisków (błąd wersji 0.1.65)
- dodana funkcja Lua WinAPI GetAsyncKeyState() - pozwalająca np. uzależnić działanie skryptu wywoływanego przyciskiem od stanu Ctrl/Shift/Alt
- dodana opcja nagrywania tylko jednej ze stron połączenia (do wyboru)
- rozszerzona funkcja Lua RecordStart(file, channels, side); trzeci (opcjonalny) argument określa która strona / które strony połączenia mają być nagrywane (0 = obie/mix, 1 = local, 2 = remote); trzeci parametr ma zastosowanie tylko do nagrywania mono (channels = 1), w przeciwnym przypadku strony połączenia są nagrywane w osobnych kanałach L/R jak wcześniej
- dodana opcja linii komend specyfikująca katalog ustawień/profilu; pozwalan na współdzielenie jednej kopii plików wykonywalnych przez wielu użytkowników; przykład: tSIP.exe /profiledir="E:\zrzut\aa bb"
- dodana funkcja Lua: GetProfileDir()
- dodane ustawienie "Hide tray notifier when call is auto-answered"
- FIXED: dekodowanie UTF8 nie było użyte do BLF remote identity display name
- dodana obsługa P-Asserted-Identity
- dodana obsługa zdarzenia REINVITE (aktualizacja wyświetlanego CLIP z PAI)
- dodane ustawienia BLF: "Keep previous remote identity info if remote identity is missing in notification" i "Ignore or clear remote identity if call state is set to terminated"
- dodana funkcja Lua PlaySound() function (ekwiwalent WinAPI, w module tsip_winapi)
- okno skryptu akceptuje drag-and-drop plików Lua
- dodane zdarzenie skryptowe "on programmable button" i funkcja Lua "SetHandled"
- dodane funkcje Lua GetButtonType(btnId) i GetButtonNumber(btnId)
- 2019.04.15 tSIP_0_1_66_1_bin.zip
- FIXED: brakujące sprawdzanie ustawienia skryptu zdarzenia "on programmable button"
- 2019.05.25 tSIP_0_1_67_bin.zip, source: tSIP_0_1_67_src.zip
- dodane niezależne ustawienie szerokości dla każdej kolumny
- dodana brakująca obsługa onClick etykiety label2 programowalnego przycku
- użyte PAI z odpowiedzi 200/OK reply ("COLP" / aktualizacja po odebraniu przez drugą stronę)
- dodana funkcja Help/Troubleshooting
- dodane ustawienie wysokości głównego okna
- dodana opcja ukrycia przełącznika pokazującego/ukrywającego panel speed dial
- dodana opcja modyfikacji zachowania przy błędzie urządzenia audio - nierozłączanie połączenia przy błędzie
- dodane zdarzenie skryptowe "on audio device error"
- interfejs pluginów: dodane przekazywanie zdarzenia błędu urządzenia audio
- interfejs pluginów: rozszerzenie o możliwość wykonywania przez plugin skryptów
- interfejs pluginów: dodana funkcja SetProfileDir(dir)
- plik wave jako źródło audio: zwalnianie otwartego pliku audio od razu po wczytaniu
- poprawione dzielenie przez zero przy przełączaniu na moduł nullaudio przed potwierdzeniem połączenia
- nowy plugin: Text-To-Speech jako wejście audio (github)
- 2019.07.17 tSIP_0_1_68_bin.zip, source: tSIP_0_1_68_src.7z
- dodane opcje ukrywające wrażliwe informcje związane z konfiguracją konta
- przeznaczenie: zwiększenie bezpieczeństwa przy korzystaniu ze współdzielonego komputera
- wybrane ustawienie nie są widoczne w GUI i nie są zapisywane do pliku
- podwójne kliknięcie na liście pluginów włącza/wyłącza wybrany plugin
- dodane math.random() do przykładu dzwonienia w pętli przy użyciu Lua
- dodana opcja wyłączająca użycie "sip:" jako znacznika direct IP call przy połączeniu inicjowanym z linii komend (lub z przeglądarki)
- dodana opcja "Show main form when making call", przeznaczona do użycia przy wykonywaniu połączeń z użyciem globalnych skrótów klawiszowych, linii komend albo mechanizmu protocol handler (przeglądarki)
- część kodu przeniesiona do projektu common.lib
- funkcja Troubleshooting: dodane sprawdzanie braku kodeków i zbyt dużej liczby kodeków w konfiguracji
- historia połączeń: dodane ustawienie preferowania informacji PAI (P-Asserted-Identity) przy wyświetlaniu i przy wykonywaniu polączeń z listy
- skrypty: zdarzenie break jest wysyłane do uruchomionych skryptów przed zamknięciem aplikacji
- popwione właściwości TabOrder w oknie dodawania/edycji kontaktów
- dodany hint z dodatkowymi informacjami do historii połączeń
- domyślna konfiguracja / pierwsze uruchomienie: dodany dodatkowy przycisk z opisem informującym że przyciski mogą być edytowane przez prawy klik
- dodane opcje ukrywające wrażliwe informcje związane z konfiguracją konta
- 2019.09.07 tSIP_0_1_69_bin.zip, source: tSIP_0_1_69_src.7z
- dodana opcja formatowania czasu połączenia w histori połączeń jako minuty:sekundy
- dodana nazwa kodeka do historii połączeń (hint, opt-out)
- zapisywanie szerokości kolumn historii połączeń w ustawieniach
- Lua: dodana funkcja codecName = GetCallCodecName()
- dodane hinty to suwaków programowej regulacji głośności
- dodane skalowanie do ustawienia wysokości głównego okna (może wymagać ręcznej modyfikacji przy upgrade jeżeli skalowanie było ustawine na inną wartość niż 100%)
- Lua: dodana funkcja PluginEnable(dllName, state), np. PluginEnable("TTS.dll", 1)
- ustawienia konta: dodana konfiguracja sposobu wysyłania "DTMF" (RFC2833 / SIP INFO)
- dodane ustawienie wyboru fontu okna logowania (domyślny font wygląda źle pod Wine)
- jsoncpp.lib: dodana obsługa AnsiString i kilka funkcji ułatwiających korzystanie
- Lua: dodana funkcja MainMenuShow(state) (state = 0/1)
- dodane opcje ("Locking") ukrycia głównegu menu i paska statusu
- FIXED: integracja z przeglądarką / click-to-call: poprzednie okno nie było znajdowane jeżeli skonfigurowana została własna nazwa okna głównego
- FIXED: integracja z przeglądarką: komendy z linków jak tsip:HANGUP nie działały
- skrypty: dodany drugi, niezależny timer jako źródło zdarzeń
- Lua: dodana funkcja SetButtonCaption2(btnId, text)
- Lua: dodana funkcja state = GetButtonDown(btnId) (state = 0/1)
- skrypty: dodany przykład sprawdzania z wewnątrz skryptu typu i id zdarzenia uruchamiającego skrypt
- zwiększony rozmiar kolejek command i callback do 1024
- mechanizm wysyłania własnych wiadomości SIP
- Lua: requestId = SendCustomRequest(uri, method, extraHeaderLines), np.<br>
- local requestUid = SendCustomRequest("sip:192.168.1.12", "OPTIONS", "Accept: application/sdp\r\nContent-Length: 0\r\n\r\n")
- Lua: ClearCustomRequests() - skasowanie stanu wszystkich wiadomości SIP użytkownika
- Lua: DeleteCustomRequest(requestId)
- Lua: uri, method, extraHeaderLines = GetCustomRequest(requestId)
- Lua: haveReply, error, sipStatusCode = GetCustomRequestReply(requestId)
- Lua: replyText = GetCustomRequestReplyText(requestId)
- nowe zdarzenie skryptowe: "on custom request reply"
- okno skryptów: dodany przykład skanowania sieci lokalnej przy użyciu wiadomości SIP OPTIONS
- kilka zmian mających na celu usprawnienie pracy aufile na wolniejszych komputerach (Atom N270, L16/44100, 10ms framing)- waitable timer
- 2019.11.05 tSIP_0_1_70_bin.zip, source: tSIP_0_1_70_src.7z
- dodany moduł źródła audio aufile_mm (plik wave z multimedialnym timerem - działąjący lepiej na wolniejszych komputerach)
- Lua:
- dodana funkcja ApplicationClose()
- dodana funkcja SetCallTarget(target) dla przetwarzania/podmiany numeru ze zdarzeniem "on make call", np. czyszczenia wklejonego numeru
- dodane ustawienie "Do not pass parameters to previous instance" (przykład użycia: uruchomienie aplikacji na potrzeby pojedynczego połączenia, zamknięcie aplikacji ze skryptu)
- dodany przycisk otwierający w eksploratorze katalog z nagraniami
- FIXED: katalog profilowy pluginu nie był aktualizowany przy przeładowaniu pluginu
- HWND_TOPMOST/HWND_NOTOPMOST trik przenoszący okno na front przy przychodzących połączeniu
- Troubleshooting: dodane sprawdzania adresy prywatnego Windows
- bardziej wygodny wybór interfejsu sieciowego - lista interfejsu
- zatrzymanie odtwarzania wav (np. busy.wav) po wciśnięciu przycisku Hangup
- dodany moduł audio winwave2 - bazujący na wątkach
- dodane proste AGC dla kierunku odbiorczego
- dodane ustawienie portaudio suggestedLatency
- FIXED: problem z zamykaniem okna notyfikacja gdy aplikacji została zminimalizowana
- FIXED: nieprawidłowy wpis w historii połączeń przy połączeniu wychodzącym jeżeli zostało użyte PAI
- dodana bardzo podstawowa obsługa wiadomości tekstowych (SIP SIMPLE)
- 2020.01.27 tSIP_0_1_71_bin.zip, source: tSIP_0_1_71_src.7z
- użycie opcji ofNoChangeDir dla dialogów open/save, wyłączenie ofHideReadOnly dla dialogów open
- Lua: dodana funkcja GetAudioErrorCount(), zwracająca licznik inkrementowany gdy zakończy się odtwarzany plik audio
- Lua: dodana funkcja GetAudioRxSignalLevel()
- dodany przykład "Lenny"
- ekstrakcja numeru z PAI także dla połączeń wychodzących
- dodany przycisk otwierający edytor skruptu dla okna edycji programowalnego przycisku
- okno ustawień: wydzielone kilka ustawień z grupy "General" do grupy "Branding"
- dodany kodek Opus
- FIXED: problem z odtwarzaniem krótkich plików wave
- winwave play: zmiany mające na celu utrzymanie bardziej jednorodnego rozmiaru ramki
- przeniesione ładowanie modułów dynamicznych przed inicjalizację konta (naprawiony problem z G729.dll)
- dodana opcja włączenia dodatkowych logów aubuf
- Lua: dodana funkcja ReadContacts(), ponowne odczytanie całej książki telefocznej z pliku JSON (np. na potrzeby provisioningu)
- 2020.05.01 tSIP_0_1_72_bin.zip, source: tSIP_0_1_72_src.7z
- z każdym kontaktem / wpisem w książce telefoniczne skojarzyć można ścieżkę (plik)
- nowy typ przycisku: "Contact file" - otwarcie na żądanie (używając ShellExecute "open") pliku skojarzonego z ostatnim kontaktem
- opcje automatycznego otwarcia pliku skojarzonego z kontaktem przy połączeniu przychodzącym / wychodzącym
- dodane zdarzenie skryptowe "on contact note open" i funkcja Lua AppendContactNoteText
- dodana konfiguracja display name dla konta
- wybrane ale nie znalezion (np. aktualnie odłączone) urządzenie audio jest pokazywane na liście z dodatkowym opisem [NOT FOUND]
- FIXED: ustawienie rozmiaru pliku logu
- dodany lock Portaudio locking (możliwe zawieszenie jeżeli urządzenia audio były enumerowane np. w skrypcie on startup)
- edycja klawiszy skróconych: ukrycie ID jeżeli nie ma ono zastosowania do wybranego typu akcji
- FIXED/improved: skojarzenie MESSAGE z oknem konwersacji dla przydzącej wiadomości tekstowej
- dodany opis celu do opisu okna konwersacji tekstowej
- dodany dźwięk odtwarzany dla przychodzącej wiadomości MESSAGE
- przekazywany zwrotnie statusy wysłanej wiadomości MESSAGE, wyświetlany w oknie konwersacji jeżeli jest inny niż SIP/200
- FIXED: pliki dzwonków nie były aktualizone jeżeli były edytowane ręcznie
- dodane bitmapy/icony od Andiego Toppa (podkatalog /img, opt-in)
- bitmapy przycisków z okna głównego (backspace, microphone, speaker) są od teraz konfigurowalne
- dodane okno patchowania ustawień przez JSON - umożliwia wklejenie tekstu JSON lub upuszczenie pliku JSON, kompletną lub częściową aktualizację ustawień
- dodany nowy typ przycisku: restart części aplikacji odpowiedzialnej za komunikację SIP
- dodany nowy typ przycisku: wysłanie wiadomości tekstowej (IM)
- Lua: dodana funkcja SendTextMessage(uri, text, sendImmediately)
- 2020.06.29 source: tSIP_0_1_73_src.7z
- interfejs pluginów: dodana funkcja pozwalająca pluginowi dodać pozycję do menu kontekstowego traya, umożliwiając użycie tSIPa jako hosta pluginów ogólnego przeznaczenia
- interfejs pluginów: dodana funkcja ustawiająca status aplikacji (SetAppStatus)
- nowy plugin: HTTPstatus - pokazujący w trayu temperaturę/wilgotność/ciśnienie z mojego czujnika
- nowy plugin: SystemShutdown - usypiający (S3/S4) lub wyłączający PC o wskazanej godzinie
- dodany generator DTMF inband
- lista kontaktów i historia połączeń: dodane opcje wysłania wiadomości MESSAGE / IM
- dodany przykład Lua dla SendTextMessage
- edytor tekstu w oknie patchowania konfiguracji JSON zmieniony na Scrintilla
- zwiększony limit kodeków audio konta do 16
- jsoncpp: dodana funkcja Value::getString()
- obsługa przychodzących wiadomości MESSAGEs: kod i powód odpowiedzi są konfigurowalne, softfon może też zostać skonfigurowany w taki sposób by nie odpowiadał na przychodzącego wiadomości MESSAGE, generując timeout (cele testowe)
- dodany przykład Lua wysyłania pojedynczego żądania SIP
- dodany plik StaticCheck.h / C++ STATIC_CHECK
- dodana funkcja pauzy dla nagrywania
- nowe typy przycisków: start nagrywania (uruchomienie nagrywania z domyślnymi parametrami lub wznowienie nagrywania), pauza nagrywania
- nowy rodzaj zdarzenia do którego można przypisać skrypt: on recording state
- Lua: dodana funkcja GetRecordingState(id)
- dodana opcja pomijania przywracania przycisku taskbar (być może pomagająca przy problemach z Windows RDP)
- pokazywanie tekstu powodu z odpowiedzi na wysłaną wiadomość MESSAGE
- drobne zmiany poprawiające kompatybilność w wczesną wersją BDS2006, zmiany sposobu zapewnienia kompatybilności z BDS
- 2020.08.11 tSIP_0_1_74_bin.zip, źródło: tSIP_0_1_74_src.7z
- poprawione literówki WIN32 z wersji 0.1.73
- dodane kilka aktualizacji re/rem/baresip
- ikona w trayu jest zmieniana jeżeli wystąpi błą inicjalizacji
- logowanie: czyszczenie całego TRichEdit zamiast usuwania najstarszej zawartości linia po linii
- Lua: dodana funkcja UpdateButtons(json)
- dodane okno patchowania konfiguracji przycisków
- automatyczny restart po błędzie inicjalizacji (np. tymczasowej nieaktywności interfejsu sieciowego do którego bindowany jest klient)
- kilka innych drobnych poprawek
- 2020.10.28 tSIP_0_1_75_bin.zip, źródło: tSIP_0_1_75_src.7z
- kontakty: zróżnicowanie menum popup w zależności od tego czy kontakt posiada jeden czy więcej numer/URI
- dodana opcja pominięcia tworzenia ikony w trayu
- dodana opcja ukrycia dialpada
- ikona w trayu jest zmieniana przy błędzie rejestracji
- poprawiona obsługa zmiany rozmiaru okna edycji kontaktu
- mechanizm tłumaczeń (w tym momencie tylko dla kilku podstawowych elementów)
- pliki translacji JSON (struktura: key -> text) in podkatalogu translations
- konwersja UTF8 na ANSI - zależna od bieżącej strony kodowej dla aplikacji ni-Unicode
- wybór pliku tłumaczeń: grupa ustawień "General"
- okno powiadomienia: ukrywany przycisk "Answer" jeżeli połączenie zostało odebrane
- opcje uruchamienia/pauzy nagrywania z linii komend (albo przeglądarki)
- dodany import książki telefonicznej w popularnym formacie XML/Yealink
- dodany przykład Lua pobierający przy użyciu curl książkę telefoniczną w formacie XML i aktualizujący lokalną książkę
- dodana opcja logowania tylko pierwszych linii wiadomości SIP
- dodana opcja pominięcia enkodowania numeru telefonu jako base64 w nazwie pliku nagrania
- kilka drobnych poprawek i zmian
- 2020.12.08 tSIP_0_1_76_bin.zip, źródło: tSIP_0_1_76_src.7z
- dodane tłumaczenie na język niemiecki - podziękowania dla Andiego Toppa (www.comfine.de)
- dodana opcja zmieniająca layout głównego okna - przeniesienie elementów sterujących połączeniem do dialpada
- dodane ustawienie sposobu sortowania combobox z wybranymi numerami (według numeru / według czasu)
- dodane ustawienie blokujące zmianę połążenia okna notyfikacji
- dodany nowy typ przycisku: auto answer/DND (zależnie od skonfigurowanego kodu SIP)
- okno edycji skryptów: integracja z luacheck
- SetHandled(0|1) działa ze skryptami "on make call"
- dodane logi dla połączeń z linii komend
- akceptacja/uruchamianie skryptu przekazywanego z linii komend (/tsip=SCRIPT=xxx) [opt-in]
- FIXED: konfiguracja przycisków nie była zapisana po wywołaniu Lua UpdateButtons()
- restartowanie UA jeżeli wymagane po aktualizacji ustawień przycisków
- poprawiona część ostrzeżeń luacheck w plikach przykładów Lua
- FIXED: niektóre połączenia używały transportu UDP zamiast TCP wbrew konfiguracji
- dodany do logu pomiar czasu odczytu i zapisu konfiguracji przycisków
- 2021.02.07 tSIP_0_2_00_bin.zip, źródło: tSIP_0_2_00_src.7z
- duży zestaw zmian związany z konfiguracją GUI i aplikacjami typu kiosk
- [BREAKING] nie wszystkie ustawienia są zachowane przy upgrade - wskazane jest wcześniejsze zachowanie plików tSIP.json i tSIP_buttons.json przed aktualizacją pliku wykonywalnego
- zmiana ogólnego układu GUI - konsola jest teraz główną częścią okna, główny panel (dialpad, itp.) jest położony na niej
- przyciski nie są od teraz organizowane w kolumny, mogą być przemieszczane swobodnie a ich rozmiary są konfigurowalne (menu kontekstowe)
- dwa pojemniki na przycisk: jeden mniejszy na panelu głównym ("Redial", itp. w domyślnej konfiguracji), większy na całej powierzchni aplikacji, 180 przycisków
- przycisk otwierający/zamykający konsolę zmienia teraz rozmiar okna głównego odsłaniając/zasłaniając część pojemnika na przyciski i zmienia pozycję głównego panelu (umożliwiając np. "rozwinięcie" konsoli na lewo od głównego panelu)
- nowe menu kontekstowe kontenera przycisków
- nowe proste okno dialogowe do kopiowania właściwości przycisków
- do kontenera przycisków przypisać można bitmapę tła
- dodane wiele nowych właściwości przycisków:
- rozmiar i pozycja
- visibility
- inactivity
- stan down/up
- pozycja linii opisu
- pozycja bitmapy/li>
- konfiguracja fontu dla obu linii opisu
- szerokość ramki plus opcja użycia płaskiej ramki
- uzależnione od stanu przycisku kolory tła, fontów, ramki
- rozszerzona lista funkcji Lua: SetButtonVisible, SetButtonInactive, SetButtonDown, SetButtonImage, SetButtonCaption2
- zoptymalizowany zapis konfiguracji przycisków (głównie dla konfiguracji Debug/CodeGuard) - zapisywanie tylko właściwości innych niż właściwości domyślne o ile opcja "saveAllSettings" nie została użyta
- opcja "SpeedDialOnly" zastąpiona została przez "HideCallPanel" + "HideMainPanel"
- panel sterowania połączeniem i panel Dialpad/Contacts/History mogą być niezależnie pozycjonowane i ukrywane
- nowe zdarzenie skryptowania: "on programmable button mouse up/down", przekazuje id przycisku jako id źródła
- Lua: dodana funkcja GetButtonMouseDown(buttonId)
- id i typ przycisku wyświetlany jest na popupie przycisku
- 2021.02.23 tSIP_0_2_00_4_bin.zip, source: tSIP_0_2_00_4_src.7z
- usunięte ustawienie "noIcon" przycisku
- dodane ustawienie "labelLeft" przycisku
- FIXED: ustawień początkowych kilku przycisków ("Redial", itp.) nie dało się nadpisać od wersji 0.2
- dodany nowy typ akcji dla skrótów klawiszowych: answer/hangup w zależności od bieżącego stanu połączenia (przeznaczony do użycia z pojedynczym przyciskiem np. z zestawu Bluetooth)
- dodane tłumaczenie na język francuski (Thierry Pimont)
- dodane tłumaczenie na język rosyjski (https://github.com/homedimon)
- 2021.05.11 tSIP_0_2_02_bin.zip, source: tSIP_0_2_02_src.7z
- removed dialpadBackgroundImage - it is not replaced by bitmap for first button container that covers whole dialpad area
- numeric buttons are now configurable; button container covers whole dialpad area
- added configuration of dialpad elements other than programmable buttons (hiding, sizes and position)
- added setting to use ClientWidth/ClientHeight instead of Width/Height for main window
- added tone generator with Lua GenerateTones(ampl, freq); GenerateTones() takes up to 4 amplitude (as a fraction of full scales) + frequency (Hz) pairs; calling GenerateTones with empty parameter lists stops generator; tone generator is placed before softvol
- added setting to loop ring wave file without silence period
- added Lua function: state = GetButtonBlfState(btnId)
- reduced subscriptions retry times to maximum of 3600 s
- added Expires configuration for each dialog-info and presence panel/button
- 2021.05.18 source: tSIP_0_2_03_src.7z - minor bugfix release
- FIXED: missing dialpad keys when upgrading from version < 0.2
- avoid binding to VirtulBox/VMvare/Hyper-V network interface
- 2021.05.25 tSIP_0_2_03_1_bin.zip, source: tSIP_0_2_03_1_src.7z - another bugfix release
- FIXED: bug in pl_advance introduced in 0.2.03, affecting RFC2833 DTMF transmission
- 2021.07.17 tSIP_0_2_04_bin.zip, source: tSIP_0_2_04_src.7z
- added ZRTP support
- added translation mechanism for contacts, history, contact editor
- added Spanish translation
- FIXED: importing numbers #2 and #3 from CSV to contacts
- added note import when importing contacts from CSV
- added "SCRIPT_B64=" command line parameters - sometimes it might be easier to encode script with base64 than to escape it for command line
- increased buffer size for registrar URI, added log if adding account failed
- 2021.08.28 tSIP_0_2_05_bin.zip, source: tSIP_0_2_05_src.7z
- added TLS and SRTP support
- IMPORTANT: libcrypto-1_1.dll and libssl-1_1.dll (OpenSSL libraries) are now parts of the distribution - copy these files from zip if updating executable
- IMPORTANT: libcrypto-1_1.dll and libssl-1_1.dll are requiring installation of Visual Studio 2015 runtime (there is high chance you may have this already installed) or manually adding VCRUNTIME140.dll
- 2021.11.09 tSIP_0_2_05_3_bin.zip, source: tSIP_0_2_05_3_src.7z
- added "SCRIPT_FILE=" command line parameter - starting specified script file from /scripts subfolder
- use GetProcessImageFileName instead of GetModuleFileNameEx for FindWindowByCaptionAndExeName() Lua function (compatibility with 64-bit OS)
- FIXED: missing early media audio when SRTP was enabled
- added vcruntime140.dll to distributed binaries
- 2022.01.10 tSIP_0_2_06_bin.zip, source: tSIP_0_2_06_src.7z
- saving last SIP reply code and reply text in call history, can be added to history list hint
- added Lua GetPreviousCallStatusCode() and GetPreviousCallReplyLine() returning information about last failed call (after this call has ended, e.g. using "on call state" CALL_CLOSED event)
- added 3 extra returned values to GetBlfState(contactId) function: remote identity URI, remote identity display name, call direction
- Lua: added contactId = GetContactId(blfUser) function (number to contact id conversion to be used with GetBlfState() function)
- added new setting: SpeedDial/"Preferred state if multiple dialog elements are received in NOTIFY XML"
- added separate error codes/texts for opening wave files and opening audio devices
- call state label shows also local error information like error opening audio device (when call ends)
- Lua Hangup() takes SIP code and reason text as optional arguments
- added reason text to auto answer configuration, auto answer/DND button configuration and custom hangup button configuration
- added hint/tooltip to contact list (numbers + note)
- showing button ID + description on button editor frame
- exiting button editing (resizing/moving) with Esc
- added window with short (very short at the moment) description for each custom Lua function, accessible from Script window / Help
- 2022.03.08 tSIP_0_2_07_bin.zip, source: tSIP_0_2_07_src.7z
- FIXED: audio devices configuration was reset after config merge
- few minor updates to Lua help window
- log window: added buttons copying all and last 400 lines
- replying with 200 instead of 415 for NOTIFY with terminated/noresource (less mess in logs when working with FreeSWITCH)
- FIXED few bugs related to global hotkeys
- added new main window settings: offset allowing to change window position when switching between "normal" and "expanded" state, e.g. for anchoring window to right side of the desktop
- FIXED exception when in codec selection list codec was moved below last item list
- added option to start audio source early (actually opening it twice) - intended to fight with initial audio delay on Mairdi Bluetooth headset when switching profiles
- 2022.03.13 HidControl.dll
- 2022.04.10 TcpServer.dll
- 2022.04.30 tSIP_0_2_08_bin.zip, source: tSIP_0_2_08_src.7z
- FIXED option clearing BLF remote identity on call disconnection
- changed code responsible for restoring main window and showing tray notification to avoid stealing focus
- link in "About" window is now configurable and default value can be changed by editing resources
- refactored managing of settings pages
- settings pages can now be hidden individually
- settings (fixed/forced) can now be embedded as a resource, allowing e.g. to prevent some settings from editing by the end user by editing JSON file
- scripts can now be assigned to hotkeys directly (without previously needed programmable key middleman)
- added WinAPI keybd_event Lua function (e.g. for simulating Ctrl+C to copy selected text and make call using number from clipboard)
- FIXED "Message" contact popup menu item for contacts with single number
- added Lua HideTrayNotifier() function, fixed unused texts from ShowTrayNotifier()
- Troubleshooting: hints if bitmaps intended for BLF (dialog-info) are left after switching button type to Presence
- FIXED: button image was always centered vertically regardless of configuration
- Lua window: added File/New (mostly for convenience when working with kiosk-like GUI missing main menu)
- button configuration: number setting is not hidden for "Script" button (number may be read by script and then few buttons might use same script)
- FIXED: if main menu was hidden in settings, it was still visible at startup for a short moment
- FIXED: incoherent GUI state after making the call that failed immediately due to no network
- Locking: added separate setting making main window borderless
- added option (SpeedDial tab) to move main window by dragging button container (for semi-kiosk borderless applications)
- 2022.07.05 tSIP_0_2_09_bin.zip, source: tSIP_0_2_09_src.7z
- file format selection for call recording, calls can be now recorder also as Opus/OGG
- libopusenc.lib project is added
- Lua StartRecording(): new optional parameter selecting recording format (0 = WAVE, 1 = Opus/OGG)
- note: selecting very low bitrate for Opus would switch it to mono mode even if recording is configured as stereo
- updated French translation file - thanks to lyonelf
- file format selection for call recording, calls can be now recorder also as Opus/OGG
- 2022.10.25 tSIP_0_2_10_bin.zip, source: tSIP_0_2_10_src.7z
- FIXED: possible buffer overrun / crash in call recording, observed (mainly?) when ending the call with L16/48000/1 codec
- FIXED: confusing missing "Registering" status of startup that should be visible in case of any problems with registration
- added human-readable names to network adapters list (binding to network interface)
- added MessageBox if loading translation from file fails (e.g. due to invalid JSON)
- added MessageBox if file edit button in contact editor was pressed but file was not specified
- updated distributed OpenSSL DLLs to version 1.1.1g
- unified aufile and aufile_mm source, fixing playback of short wave files in aufile_mm
- renamed Settings "Phones" page to "Plugins / phones" and "WaveIn, WaveOut (2) - experimental" to "WaveIn, WaveOut v2"
- few other minor changes
- 2022.11.30 New option for G.729 codec, tSIP-plugin-g729.
- 2022.12.15 tSIP_0_2_11_bin.zip, source: tSIP_0_2_11_src.7z
- FIXED: WebRTC AEC was not working for 16 ksps codecs
- added support for G.711a/u (in addition to S16_LE) wave files playback as audio source (aufile/aufile_mm)
- programmable button config window: added missing handling of aufile_mm audio source module
- call recording: using saturation when recording in mono mode (both sides mixed)
- added access to call recordings from call history context menu
- new setting: History / Show record file in hint
- Help / Troubleshooting: added checking if network interface specified in Settings / Network is missing
- updated some translations
- do not lock "Settings" in main menu when UA is (re)starting
- this was initially added to prevent PortAudio crash when using by two threads at the same time (audio devices were enumerated when settings window was opened), later this problem fixed by adding PortAudioLock
- this fixes missing reenabling for this menu item for APP_START_FAILED state
- added configurable audio (noise) gate for TX direction (from local microphone)
- 2022.12.30 New, separate version with video support.
- 2023.03.23 tSIP_0_2_12_bin.zip, tSIP_0_2_12_video_bin.7z, source: tSIP_0_2_12_src.7z
- splitting binaries into separate "regular" and "video" versions
- "audio only" version should be preferred if you don't need video and don't need avformat audio input capabilities
- video support (moved back from tSIP-video), enabled by compile-time USE_VIDEO switch:
- separate binaries with some drawbacks
- LGPL licensing for FFmpeg
- openh264.dll needs to be downloaded separately from Cisco page due to licensing reasons (download openh264-2.3.1-win32.dll.bz2 and extract it (using e.g. 7-zip), rename openh264-2.3.1-win32.dll to openh264.dll and put it next to application executable)
- larger size (for this version 13 MB more, heavily depending on options used for FFmpeg compilation)
- lots of linked third-party code, not tested at the moment for compatibility with Win98/2000/XP or Wine
- some known issues and limitations, probably more of them unknown
- video source modules:
- DirectShow (regular cameras)
- FFmpeg avformat (common mp4 files with e.g. H.264+AAC, possibly rtsp cameras)
- colorbar generator: two versions, with and without animation
- nullvideo (black screen)
- video output modules:
- SDL, displaying in separate window or on specified programmable button (note that button sizes/layout are customizable)
- nullvideo (discarding received video stream)
- selfview module with picture-in-picture option
- codecs:
- H.264 with packetization modes 0 and 1
- H.263
- MP4V-ES
- new programmable button type, switching video source module and device during the call
- switching between cameras or camera/video file/colorbar generator
- might be used for video "mute" function, switching to e.g. animated colorbar generator
- this button type would be visible also in "audio only" build, but would not take effect
- new Lua function: SwitchVideoSource(module, device)
- FFmpeg avformat module can be also used as audio input, adding support for e.g.:
- mp3 files
- audio from mp4 and other video files
- internet radio stations (http-based, https is not supported with my current FFmpeg build)
- separate binaries with some drawbacks
- "About" window shows whether binary was compiled with or without video support; if video is enabled there are also additional configuration options in settings window
- audio source device/file and newly added video source device/file
- can now be used with relative path (taking precedence) or with absolute path, allowing e.g. to use big mp4 file as video or audio source without copying it to application folder
- audio/video source device does not have to be file now as avformat accepts also http or rtsp protocols, e.g. internet radio link
- default configuration: added "ABC", "DEF", "GHI", etc. letters to "DTMF" buttons
- small change for programmable button labels automatic vertical spacing in situation when button height is smaller than a sum of labels height
- contacts: locale-aware comparing/sorting using AnsiCompareIC (e.g. L and Ł should be next to each other)
- winwave2 is now the default audio input module (due to winwave issue with detaching audio device while this device is in use)
- default configuration: RTP timeout is now enabled with 300 s time
- incoming call: tSIP now responds with 488 instead of accepting "silent" call when there are no common codecs
- removed inline definition for C files, hopefully this would help with related compiler issue
- fixed INT64_MIN/INT64_MAX/UINT64_MAX definitions in TC++ stdint.h (tSIP/_doc folder)
- 2023.03.30 HidPhone.dll
- 2023.04.08 tSIP_0_2_13_bin.zip, tSIP_0_2_13_video_bin.7z, source: tSIP_0_2_13_src.7z
- fixed distorted audio / incorrect audio timing at the start of the call if using AAC internet radio as audio source
- fixed crash when name of the file used as avformat source contained non-ASCII characters
- L16/44100 (and up) no longer should require manual ptime limiting through account settings
- fixed timing and audio buffer sizing for L16 codecs with high sampling rate, low ptime like L16/48000/2
- add volume control (Settings / Audio IO) for alerting and ring audio
- changed start failure handling: faster initial restart, slowing for subsequent errors (better handling of e.g. slow to connect WiFi or detached network cable when starting PC)
- bunch of minor changes and code cleanup
- 2023.05.27 New major function for RecordViewer: transcribing call recordings to text.
- 2023.06.29 source: tSIP_0_2_14_src.7z - replaced by bugfix release 0.2.14.1
- limited maximum auto-restart time (no network) to 600 seconds
- audio recorder code is now reentrant / capable of handling multiple calls
- clarified description in windows patching main settings and button settings
- delayed creation of most of the windows until they are needed
- fixed position and sizes of dialpad elements (volume trackbars and buttons, transfer edit) if GUI scaling was used
- fixed call history column sizes changing each run if GUI scaling was used
- added two extra modes for handling Access-URL: delaying automatic URL opening until call is confirmed
- added Lua GenerateTones() example
- added Lua (SIP account) Unregister() and Reregister() functions
- troubleshooting: added warning if wave file selected as audio source does not exist
- recognizing "Call completed elsewhere" reason in received CANCEL
- application tray icon is not changed for these calls like for unanswered calls
- option to not store calls with this reason in call history
- new icon in call history for this call type - like for regular call unanswered but grayed out
- option to show disconnection reason text received with CANCEL in call history
- 2023.07.03 tSIP_0_2_14_1_bin.zip, tSIP_0_2_14_1_video_bin.7z, source: tSIP_0_2_14_1_src.7z
- fixed crash from v0.2.14 when call was disconnected by the other party
- passing BYE message from handler, potentially allowing to use Reason from it
- 2023.09.05 tSIP_0_3_bin.zip, tSIP_0_3_video_bin.7z, source: tSIP_0_3_src.7z
Support for multiple calls, call waiting, attended transfer, conference calls. - 2024.01.01 tSIP_0_3_01_bin.zip, tSIP_0_3_01_video_bin.7z, tSIP_0_3_01_src.zip
- FIXED: in v0.3 call history entry for outgoing call was unnecessary containing full SIP URI is user dialed with just a number/user part
- FIXED: DTMF reception using scripting was broken in v0.3
- direct URI dialing is not requiring "sip:" prefix if dialed string contains "@" in the middle or if it looks like a valid quad-dotted decimal IPv4 address
- Tools menu: added window with current scripts and plugins variables
- not requiring sip: prefix for common direct IP/URI dialing; for calling and messaging account domain is not appended if dialed string starts with "sip:", contains "@" in the middle or is a valid quad-dotted decimal IPv4
- reducing number of client transaction retransmission when shutting down application or restarting SIP stack to speed up these operation
- 2024.02.19 tSIP_0_3_02_bin.zip, tSIP_0_3_02_video_bin.7z, tSIP_0_3_02_src.7z
- plugin interface: added SetMute function
- scripting:
- added SetMute, ToggleMute, GetMute functions
- added SetHold, ToggleHold, GetHold functions
- added GetCallPeerName function
- fixed multiple-call variants of functions switching audio/video inputs and outputs during the call
- added devices = GetAudioDevicesList(moduleName, direction) function, returning array/table
- if GetAudioDevice or GetAudioDevicesList is called and audio devices list was not yet refreshed for the first time (initialized), it is done automatically
- added ApplicationShow(focused) function
- added/fixed closing with Esc in few windows
- button configuration editor:
- entered text for caption #1 and caption #2 can be multiline
- splitted settings into few pages like for main configuration
- added preview for color selection
- added preview for "BLF"/dialog/presence bitmaps
- default button configuration: "basic" column is slightly moved to the right and slightly slimmer
- default button configuration: added button with voip.ms affiliate link (note that this won't affect existing users)
- modified / extended button copy dialog
- removed most of the window size and position restrictions (better multi-monitor support)
- call state short name (visible on the LINE buttons) and description (longer text in main window) can be translated
- programmable button context menu: added options to copy to clipboard caption #1 and #2 text (e.g. text set previously by some Lua script or text from user presence status)
- direct IP dialing is not requiring "sip:" prefix when using IP:PORT as target
- FIXED issue with volume sliders for audio volume in settings moving slightly to the left each time settings are accepted if configured volume was low due to rounding errors
- added new configuration window with button container properties; this is replacing two existing items (setting/clearing bitmap) from container popup menu
- added background color to container configuration (lighter than using bitmap for the same purpose)
- multiple calls:
- added new settings to auto-deny incoming call if another call is active
- "LINE" buttons: using user-configured captions for idle state
- FIXED minor issue with main call display not refreshed in multiple call setup when there are two incoming calls and first one (from selected one) is disconnected and then incoming again
- FIXED: each call holds now its own instance of audio file player (ring, ringback, etc.) fixing possible problems with multiple calls
- 2024.03.28 tSIP_0_3_03_bin.zip, tSIP_0_3_03_video_bin.7z, tSIP_0_3_03_src.7z
- FIXED: AV when using "Mute Ring" while no call is active
- "Mute Ring" button is applied to all current calls
- FIXED unintentional change at version ~0.3: dialing combobox was not cleared at the end of the call
- Lua:
- FIXED: GetCallInitialRxInvite() function
- added ApplicationHide() function
- added GetCallUidFromLineButton(buttonId) function - allows to create script buttons associated with specific LINE button
- added GetButtonHandle(buttonId) function - allows to pass Windows HANDLE to tSIP_mpv.dll plugin
- few other minor fixes/improvements
- 2024.05.17 tSIP_0_3_04_bin.zip, tSIP_0_3_04_video_bin.7z, tSIP_0_3_04_src.7z
- added new key types to plugin/phone interface (needed for Philips VOIP1511 USB handset support)
- application toggle ("Skype" key on Philips)
- mute toggle
- call answer; it might be weird that it was not added earlier, but previously only cradle hook-off switch was needed
- call hangup
- using queue to separate plugin thread from VCL thread when passing events
- fixed "on recording state" scripting (broken in 0.3)
- Lua: added GetCallButtonId(callId) function (call id -> assigned button id)
- removed winwave module (with some issues and obsoleted by winwave2)
- if anyone still used winwave: transition should be transparent, scripts acccept both module names selecting always winwave2
- added new button containers
- on the panel with Answer/Hangup button
- on the tray notifier window, example use: answering doorphone and playing announcements to the visitors
- note: popup menus (all together for 4 containers) can be disabled from Settings/Tray Notifier
- added extra settings for tray notifier window
- window size
- hiding/moving standard GUI elements, possibly replacing them altogether with custom ones
- few minor improvements for button container configuration dialog
- BREAKING: tray notifier window no longer has background image property - it is replaced by background image of button container that is now placed on tray notifier window
- added "transparent" configuration for button container background image
- added "Make or answer the call" and "Answer the current call" button types (though script buttons could be used previously for the same purposes)
- for button(s) with "Blind transfer" type: target can be set in button configuration, if it is empty - number from the main window, "Transfer to..." is used as previously
- FIXED: hint/default text for blind transfer target edit was not showing up at startup
- blind transfer hint in the main window can be translated
- FIXED re-INVITE handling / updating CLIP/COLP with P-Asserted-Identity, broken in 0.3
- call is not disconnected on audio error or end of file if SetHandled(1) is called from Lua script, regardless of Calls/DisconnectCallOnAudioError setting
- added new key types to plugin/phone interface (needed for Philips VOIP1511 USB handset support)
- 2024.09.16 tSIP_0_3_05_bin.zip, tSIP_0_3_05_video_bin.7z, tSIP_0_3_05_src.7z
- added transport selection for outbound proxy
- FIXED H.264 RTP loss (setting SO_RCVBUF)
- added Lua SwitchAudioSourceToConfigured(OPTIONAL_callUid) function
- FIXED hangup and switching audio source for RTP multicast/unicast streaming function (broken in 0.3)
- 2024.10.14 WS2812.dll - controlling LED strip
- 2024.10.16 tSIP_0_3_06_bin.zip, tSIP_0_3_06_video_bin.7z, tSIP_0_3_06_src.7z
- FIXED button font style selection, added underline and strikeout effects
- FIXED auto-answer/DND buttons not being set down after restart
- using SENDONLY direction for hold
- video, avformat: fixed vidts overflow for mp3 playback
- video, avformat: fixed playback of mp3 files with MJPEG cover
- video: fixed exception when using colorbar generators or nullaudio video source modules
- 2024.11.24 tSIP_0_3_07_bin.zip, tSIP_0_3_07_video_bin.7z, tSIP_0_3_07_src.7z
- BLF + presence: added workaround for FreeSWITCH issue #1532
- FIXED: applying GUI scaling for tray notifier window
- Lua:
- added GetCallDurationFromStart() and GetCallDurationFromConfirmed() functions
- added winapi.GetAdaptersInfoIp() function
- skipping empty Supported line (this was crashing Zenitel)
- fixes related to handling HID headsets, mainly for multiple simultaneous calls
- added options to hide default Call/Answer and Hangup buttons
- few other minor fixes/improvements
RecordViewer.exe - narzędzie do przeglądania nagranych rozmów
Note: tSIP version with video support requires openh264.dll that needs to be downloaded separately from Cisco page due to licensing reasons. Download openh264-2.3.1-win32.dll.bz2 and extract it (using e.g. 7-zip), rename openh264-2.3.1-win32.dll to openh264.dll and put it next to application executable.
tSIP na githubie