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_11_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 posiadał początkowo wyłączenie podstawową funkcjonalności (minimalny funkcjonalny podzbiór re/rem/baresip) ale pozbawiony był zależności od zewnętrznych bibliotek i łatwy do skompilowania. Obecnie jest to prawdopodobnie jeden z najbardziej rozbudowanych softfonów (zwłaszcza uwzględniając zbiór pluginów). 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, źródło: 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
- usunięty z konfiguracji dialpadBackgroundImage - zastąpiony przez bitmapę pierwszego kontenera przycisków obejmującego cały obszar dialpad
- obszar dialpad jest teraz kontenerem przycisków, przyciski numeryczne są konfigurowalne
- dodana konfiguracja dla pozostałych elementów dialpada jak suwaki (ukrywanie, rozmiary, pozycja)
- możliwość użycia ClientWidth/ClientHeight zamiast Width/Height dla okna głównego
- Lua: dodany generator tonów - GenerateTones(ampl, freq); funkcja przyjmuje do 4 par elementów amplituda (jako ułamek full scale) + częstotliwość (Hz); wywołanie GenerateTones() z pustą listą argumentów zatrzymuje generator; generator tonów umieszczony jest w łańcuchu audio przed softvol
- dodane ustawienie usuwające pauzę z ciszą w przypadku odtwarzanie pliku wav dzwonka w pętli
- Lua: dodana funkcja state = GetButtonBlfState(btnId)
- zmniejszony maksymalny czas ponawiania subskrypcji przy błędzie do 3600 s
- dodane ustawienie Expires dla każdej subskrypcji dialog-info i presence (ustawienia przycisków)
- 2021.05.18 źródło: tSIP_0_2_03_src.7z - poprawki
- FIXED: brakujące przycisk dialpad przy upgrade z wersji < 0.2
- unikanie interfejsów sieciowych VirtualBox/VMvare/Hyper-V przy bindowaniu
- 2021.05.25 tSIP_0_2_03_1_bin.zip, źródło: tSIP_0_2_03_1_src.7z - poprawki
- FIXED: błąd w funkcji pl_advance wprowadzony w wersji 0.2.03, skutkujący błędem przy transmisji RFC2833 DTMF
- 2021.07.17 tSIP_0_2_04_bin.zip, źródło: tSIP_0_2_04_src.7z
- dodane wsparcie ZRTP
- dodany mechanizm tłumaczeń dla książki telefonicznej, historii połączeń, edytora kontaktów
- dodany język hiszpański
- FIXED: import numerów #2 i #3 z CSV do kontaktów
- dodany import notatki przy imporcie kontaktów z CSV
- dodany parametr "SCRIPT_B64=" dla linii komend - zakodowanie skryptu jako base64 może być często prostsze niż jego escapowanie dla linii komend
- zwiększony rozmiar bufora dla registrar URI, dodany log w przypadku błędu dodawania konta
- 2021.08.28 tSIP_0_2_05_bin.zip, źródło: tSIP_0_2_05_src.7z
- dodane wsparcie TLS i SRTP
- WAŻNE: libcrypto-1_1.dll i libssl-1_1.dll (bibioteki OpenSSL) są teraz częścią dystrybucji - skopiuj je z pliku zip przy aktualizacji
- WAŻNE: libcrypto-1_1.dll i libssl-1_1.dll mogą wymagać instalacji Visual Studio 2015 runtime lub ręcznęgo dodania VCRUNTIME140.dll
- 2021.11.09 tSIP_0_2_05_3_bin.zip, źródło: tSIP_0_2_05_3_src.7z
- dodany parametr linii komend "SCRIPT_FILE=" - uruchomienie skryptu z podkatalogu /scripts
- użyta funkcja GetProcessImageFileName zamiast GetModuleFileNameEx dla funkcji Lua FindWindowByCaptionAndExeName() - kompatybilność z 64-bit wersjami Windows
- FIXED: brakujące early media audio przy aktywnym SRTP
- dodany plik vcruntime140.dll dystrybuowanych plików
- 2022.01.10 tSIP_0_2_06_bin.zip, źródło: tSIP_0_2_06_src.7z
- historia połączeń przechowuje kod i tekst ostatniej odpowiedzi SIP, mogą one być dodane do hintu historii
- Lua: dodane funkcje GetPreviousCallStatusCode() i GetPreviousCallReplyLine() zwracające informacje o ostatnim nieudanym połączeniu (po zakończeniu tego połączenia, np. wewnątrz zdarzenia "on call state" CALL_CLOSED)
- 3 dodatkowe zwracane wartości przez funkcję GetBlfState(contactId): remote identity URI, remote identity display name, kierunek połączenia
- Lua: dodana funkcja contactId = GetContactId(blfUser) (konwersja numeru na indeks kontaktu który może zostać użyty przez funkcję GetBlfState())
- dodane nowe ustawienie: SpeedDial/"Preferred state if multiple dialog elements are received in NOTIFY XML"
- dodane osobne kody i opisy błędów przy otwieraniu plików wave i otwieraniu urządzeń audio
- etykieta stanu połączenia pokazuje także lokalne błędy jak błąd otwarcia urządzenia audio
- dodane opcjonalne argumenty: kod SIP i tekst reason do funkcji Lua Hangup()
- dodany tekst reason do konfiguracji auto answer, konfiguracji przycisku auto answer/DND button i konfigurowalnego przycisku rozłączenia
- dodany hint/tooltip do listy kontaktów (numbery + notatka)
- ramka edycji przycisku wyświetla ID przycisku i jego opis
- możliwość zakończenia edycji przycisku (przenoszenie/zmiana rozmiaru) klawiszem Esc
- dodane okno z krótki opisem każdej funkcji Lua specyficznej dla tSIP, dostępne z edytora skryptów
- 2022.03.08 tSIP_0_2_07_bin.zip, źródło: tSIP_0_2_07_src.7z
- FIXED: przy merge konfiguracji konfiguracja urządzeń audio nie była zachowana
- kilka małych aktualizacji okna pomocy Lua
- okno logu: dodane przyciski kopiujące ostatnie 400 linii i całą zawartość
- odpowiadaniem kodem 200 zamiast 415 na NOTIFY z terminated/noresource (mniej syfu w logach przy pracy z FreeSWITCH)
- poprawione kilka błędów związach z globalnymi skrótami klawiszowymi
- dodane ustawienie okna głównego: offset pozwalający zmienić pozycję okna przy przełączaniu między stanami "normal" i "expanded" state, np. w celu kotwiczenia okna do prawej strony ekranu
- poprawiony wyjątek przy przenoszeniu kodeka poniżej ostatniej pozycji na liście
- dodana opcja wczesnego otwarcia źródłowego urządzenia audio - dla zmniejszenia problemów z początkowym opóźnieniem audio zestawu słuchawkowego Mairdi przy przełączaniu między profilami Bluetooth
- 2022.03.13 HidControl.dll
- 2022.04.10 TcpServer.dll
- 2022.04.30 tSIP_0_2_08_bin.zip, źródło: tSIP_0_2_08_src.7z
- poprawione działanie opcji czyszczącej BLF remote identity przy rozłączeniu połączenia
- zmiana działania przywracania okna głównego i pokazywania okna traya - usunięte kradnięcie focusa
- link w oknie "About" jest teraz konfigurowalny a wartość domyślna może być zmieniona przez edycję resources (branding)
- zmiany w zarządaniu stronami ustawień
- strony ustawień mogą być indywidualnie ukrywane
- do zasobów (resources) można dodać wymuszone ustawienia co pozwala np. na uniemożliwienie użytkownikowi zmiany ustawień nawet przez bezpośrednią edycję pliku JSON ustawień
- skrypty mogą być bezpośrednio przypisane do skrótów klawiszowych (poprzednio wymagały programowanego przycisku jako pośrednika)
- Lua: dodana funkcja WinAPI keybd_event, np. w celu symulacji Ctrl+C i skopiowania zaznaczonego tekstu a następnie nawiązania połączenia z numerem ze schowka
- poprawione menu popup "Message" dla kontaktów z pojedyńczym numerem
- Lua: dodana funkcja HideTrayNotifier(), poprawiony brak użycia tekstów z funkcji ShowTrayNotifier()
- Troubleshooting: hinty jeżeli bitmapy przeznaczone dla BLF (dialog-info) nie zostały zmienione po przełączeniu typu przycisku na presence
- FIXED: bitmapa przycisku była zawsze wycentrowana pionowo bez względu na konfigurację
- okno edytora Lua: dodane menu File/New (głównie dla wygody przy pracy nad aplikacjami typu kosk które nie posiadają menu głównego)
- konfiguracja przycisków: ustawienie numeru nie jest ukrywane dla przycisków typu "Script" co pozwala na odczyt/użycie numeru wewnątrz skryptu i współdzielenie tego samego skryptu przez wiele przycisków
- FIXED: menu główne było widoczne przez krótką chwilę przy starcie mimo ukrycia go w konfiguracji
- poprawiony niespójny stan GUI po błędzie przy połączeniu wychodzącym wynikającym z braku sieci
- Locking: dodane osobne ustawienie borderless dla okna głównego
- dodana opcja (SpeedDial tab) przesuwania okna głównego przez przeciąganie myszą po kliknięciu na kontener przycisków (dla bezramkowych aplikacji semi-kiosk)
- 2022.07.05 tSIP_0_2_09_bin.zip, źródło: tSIP_0_2_09_src.7z
- wybów formatu nagrywania, połączenia mogą być teraz nagrywane też jako Opus/OGG
- dodany projekt libopusenc.lib
- Lua StartRecording(): nowy opcjonalny parametr wyboru formatu nagrywania (0 = WAVE, 1 = Opus/OGG)
- uwaga: ustawienie bardzo niskiego bitrate Opus powoduje przełączenie na nagrywanie mono mimo ustawienia nagrywania jako stereo
- zaktualizowane tłumaczenie na język francuski - podziękowania dla lyonelf
- wybów formatu nagrywania, połączenia mogą być teraz nagrywane też jako Opus/OGG
- 2022.10.25 tSIP_0_2_10_bin.zip, źródło: tSIP_0_2_10_src.7z
- FIXED: możliwy buffer overrun / crash przy nagrywani połączeń, zaobserwowany przy kończeniu połączenia z kodekiem L16/48000/1
- FIXED: możliwy wprowadzający w błąd status "Registering" przy starcie
- dodane nazwy tekstowe do listy adapterów sieciowych (binding)
- dodany MessageBox przy błędzie ładowania tłumaczeń z pliku (np. niepoprawny JSON)
- dodany MessageBox po wciśnięciu przycisku edycji pliku w edytorze kontaktów jeżeli plik nie został wskazany
- aktualizacja OpenSSL do wersji 1.1.1g
- ujednolicone źródła modułów aufile i aufile_mm, poprawione odtwarzanie bardzo krótkich plików wav przez aufile_mm
- zmiana nazwy karty ustawień "Phones" na "Plugins / phones"
- kilka innych drobnych zmian
- 2022.11.30 Druga, alternatywna wersja kodeka G.729, tSIP-plugin-g729.
- 2022.12.15 tSIP_0_2_11_bin.zip, źródło: tSIP_0_2_11_src.7z
- FIXED: WebRTC AEC nie pracował z kodekami o próbkowaniu 16 ksps
- dodana obsługa plików WAVE G.711a/u (oprócz S16_LE) jako źródła audio (aufile/aufile_mm)
- edytor przycisków: dodana brakująca obsługa modułu źródła audio aufile_mm
- nagrywanie połączeń: nasycanie przy nagrywaniu w trybie mono
- dodany dostęp do nagrań z menu kontekstowego historii połączeń
- nowe ustawienie: History / Show record file in hint
- Help / Troubleshooting: dodane sprawdzanie czy interfejs sieciowy skonfigurowany w Settings / Network istnieje
- aktualizacja tłumaczeń
- menu "Settings" nie jest blokowane w trakcie restartu UA
- dodana konfigurowalna bramka szumów dla kierunku TX (z lokalnego mikrofonu)
- 2022.12.30 Nowa, osobna wersja ze wsparciem wideo.
- 2023.03.23 tSIP_0_2_12_bin.zip, tSIP_0_2_12_video_bin.7z, źródło: tSIP_0_2_12_src.7z
- rozdzielenie dystrybucji na wersję zwykłą i wideo
- wersja "tylko audio" powinna być preferowana jeżeli wideo ani wejście audio modułu avformat nie są wymagane
- obsługa wideo włączana przez przełącznik kompilacji USE_VIDEO:
- osobne pliki binarne z drobnymi niedogodnościami
- licencja LGPL dla FFmpeg
- openh264.dll wymaga osobnego ściągnięcia ze strony Cisco ze względów licencyjnych (openh264-2.3.1-win32.dll.bz2: po rozpakowaniu (np. używając 7-zip) openh264-2.3.1-win32.dll należy zmienić nazwę na openh264.dll i umieścić obok pliku wykonywalnego tSIP
- większy rozmiar (+13 MB, zależnie od opcji kompilacji FFmpeg)
- duża ilość zewnętrznego kodu, nieprzetestowana w tym momencie pod względem kompatybilności z Win98/2000/XP lub Wine
- możliwe nieznane jeszcze problemy
- moduły źródeł wideo:
- DirectShow (zwykłe kamery)
- FFmpeg avformat (pliki mp4 z np. H.264+AAC, możliwe użycie strumieni rtsp jako źródeł)
- colorbar generator: dwie wersji, z animacją i bez
- nullvideo (czarny ekran)
- moduły wyjść wideo:
- SDL, wyświetlający w osobny oknie lub na wybranym programowalnym przycisku (rozmiar przycisku można zmienić aby wypełnić on np. całe okno aplikacji)
- nullvideo (ignorowanie odbieranego strumienia wideo)
- moduł selfview module z opcją picture-in-picture
- kodeki:
- H.264 z trybami pakietyzacji 0 i 1
- H.263
- MP4V-ES
- nowy typ przycisku, przełączający moduł i urządzenie wejściowe wideo podczas rozmowy
- przełączanie między kamerami lub kamerą/plikiem wideo/generatorem obrazu testowego
- możliwe wykorzystanie jako wideo "mute", poprzez np. przełączenie na generator animowanego obrazu testowego
- ten typ przycisku jest widoczny także w wersji "tylko audio", ale nie będzie w niej działać
- nowa funkcja Lua: SwitchVideoSource(module, device)
- moduł FFmpeg avformat może być używany także jako źródło audio, umożliwiając np.:
- odtwarzanie plików mp3
- odtwarzanie audio z plików mp4 i innych plików wideo
- odtwarzanie audio z internetowych stacji radiowych (tylko http ze względu na brak wsparcia https w mojej kompilacji FFMpeg)
- osobne pliki binarne z drobnymi niedogodnościami
- okno "About" zawiera informację o typie kompilacji (wideo lub tylko audio); wersja wideo zawiera też dodatkowe opcje w oknie ustawień
- plikowe źródła audio i wideo
- mogą od teraz używać ścieżki względnej do pliku (priorytetowo) lub bezwzględnej, umożliwiając użycie dużych plików mp4 bez kopiowania ich do katalogu aplikacji
- źródło audio/wideo nie musi być plikiem - avformat akceptuje linki http lub rtsp, np. internetowych stacji radiowych
- domyślna konfiguracjia: dodane "ABC", "DEF", "GHI", itd. do przycisków "DTMF"
- drobna zmiana dotycząca automatycznego rozmieszczania etykiet przycisków w pionie w sytuacji gdy wysokość przycisku jest mniejsza niż suma wysokości etykiet
- kontakty: sortowanie uwzględniające lokalną stronę kodową, AnsiCompareIC (np. L i Ł obok siebie)
- winwave2 jest od teraz domyślnym typem modułu wejścia audio (ze względu na problem w module winwave przy odłączaniu urządzenia audio które jest w użyciu)
- domyślna konfiguracja: timeout RTP ustawiony na 300 s
- połączenie przychodzące: tSIP odpowiada kodem 488 przy braku wspólnych kodeków
- poprawione definicje INT64_MIN/INT64_MAX/UINT64_MAX w TC++ stdint.h (tSIP/_doc)
- 2023.03.30 HidPhone.dll
- 2023.04.08 tSIP_0_2_13_bin.zip, tSIP_0_2_13_video_bin.7z,
źródło: tSIP_0_2_13_src.7z
- poprawione zniekształcene audio / błędny timing audio przy starcie połączenia przy używaniu internetowego radia w formacie AAC jako źródła audio
- poprawiony crash gdy nazwa pliku używanego jako źródło dla modułu avformat zawierała znaki nie-ASCII
- L16/44100/1 (i wyżej) nie wymaga już ręcznego ustawiania ptime w ustawieniach konta
- poprawiony timing i rozmiary buforów audio dla kodeków audio L16 z wysokim próbkowaniem i niskim ptime jak L16/48000/2
- dodana regulacja głośności (Settings / Audio IO) dla sygnału dzwonienia i podobnych
- zmiana zachowania przy błędzie przy uruchamianiu: szybszy pierwszy restart, odwleczone kolejne restarty przy kolejnych błędach (lepsza obsługa sytuacji gdy np. łączenie się z WiFi jest powolne przy starcie PC)
- inne drobne zmiany
- 2023.05.27 Nowa znacząca funkcja aplikacji RecordViewer: transkrypcja (zamiana na tekst) nagrań rozmów.
- 2023.06.29 źródło: tSIP_0_2_14_src.7z
- ograniczony czas między automatycznymi restartami (np. brak sieci) do 600 sekund
- nagrywanie połączeń obsługuje od teraz wiele równoczesnych połączeń
- bardziej jasny opis w oknach patchowania głównych ustawień i ustawień przycisków
- opóźnione tworzenie większości okien do czasu kiedy okna te są potrzebne
- poprawiona obsługa skalowania GUI dla pozycji i rozmiarów elementów dialpada (suwaki i przyciski głośności, transfer edit)
- poprawiona obsługa skalowania GUI dla szerokości kolumn w oknie historii połączeń
- dodane dwa dodatkowe tryby obsługi Access-URL: opóźnione automatyczne otwieranie URL do czasu kiedy połączenie jest potwierdzone
- dodany przykład dla funkcji Lua GenerateTones()
- dodane funkcje Lua Unregister() i Register() (konto SIP)
- troubleshooting: dodane ostrzeżenie jeżeli plik wave wybrany jako źródło audio nie istnieje
- rozpoznawanie powodu "Call completed elsewhere" w odbieranej wiadomości CANCEL
- ikona aplikacji w trayu nie sygnalizuje nieodbranego połączenia
- opcja pominięcia zachowania tego typu połączeń w historii
- nowy typ ikony w historii połączeń dla tego typu połączenia - jak dla zwykłego nieodebranego połączenia, ale wyszarzona
- historia połączeń może pokazywać tekst powodu rozłączenia z wiadomości CANCEL
- 2023.07.03 tSIP_0_2_14_1_bin.zip, tSIP_0_2_14_1_video_bin.7z,
źródło: tSIP_0_2_14_1_src.7z
- poprawiony crash wersji v0.2.14 przy rozłączeniu połączenia przez drugą stronę
- przekazywanie wiadomości BYE do części interfejsowej aplikacji, potencjalna możliwość użycia Reason z niej
- 2023.09.05 tSIP_0_3_bin.zip, tSIP_0_3_video_bin.7z, źródło: tSIP_0_3_src.7z
Obsługa wielu połączeń, połączenia oczekującego, przekazywania z anonsowaniem, połączeń konferencyjnych. - 2024.01.01 tSIP_0_3_01_bin.zip, tSIP_0_3_01_video_bin.7z, tSIP_0_3_01_src.zip
- FIXED: w wersji v0.3 wpis w historii połączeń dla połączeń wychodzących niepotrzebnie zawierał pełny SIP URI jeżeli użytkownik wybrał tylko numer / część user
- FIXED: odbiór DTMF przy użyciu skryptowania nie działał w wersji v0.3
- przy bezpośrednich połączeniach SIP (direct URI dialing, peer-to-peer SIP) "sip:" prefiks nie jest wymagany jeżeli wybierany string zawiera "@" w środku lub wygląda jak adres IPv4 z 4 oktetami
- menu Tools: dodane okno z bieżącą listą zmiennych używanych przez skrypty i pluginy
- zmniejszona liczba retransmisji SIP przy zamykaniu lub restarcie aplikacji
- 2024.02.19 tSIP_0_3_02_bin.zip, tSIP_0_3_02_video_bin.7z, tSIP_0_3_02_src.7z
- interfejs pluginów: dodana funkcja SetMute
- skryptowanie:
- dodane funkcje SetMute, ToggleMute, GetMute
- dodane funkcje SetHold, ToggleHold, GetHold
- dodana funkcja GetCallPeerName
- poprawione działanie wielopołączeniowych wariantów funkcji przełączających wejścia i wyjścia audio i wideo podczas połączenia
- dodana funkcja devices = GetAudioDevicesList(moduleName, direction) function, zwracająca tablicę
- jeżeli funkcja GetAudioDevice lub GetAudioDevicesList a lista urządzeń audio nie została jeszcze odświeżona po raz pierwszy, jest to wykonywane automatycznie
- dodana funkcja ApplicationShow(focused)
- dodane/poprawione zamykanie klawiszem Esc dla kilku okien
- edytor konfiguracji przycisku:
- teksty etykiety #1 i etykiety #2 mogą być wieloliniowe
- rozdzielenie ustawień na kilka podstron jak w przypadku ustawień ogólnych
- dodany podgląd wybranych kolorów
- dodany podgląd bitmap "BLF"/dialog/presence
- domyślna konfiguracja przycisków: niewielkie przesunięcie i zmiana szerokości kolumny "basic"
- domyślna konfiguracja przycisków: dodany przycisk z linkiem voip.ms (oczywiście bez znaczenia przy aktualizacji)
- zmieniony / rozszerzony dialog kopiowania właściwości przycisków
- usunięta większość ograniczeń pozycji i rozmiarów okna (poprawione działanie przy wielu monitorach)
- skrócona nazwa stanu połączenia (widoczna na przyciskach LINE) i opis stanu (dłuższy tekst w oknie głównym) mogą być przetłumaczone na inne języki
- menu kontekstowe programowalnych przycisków: dodana opcja skopiowania do schowka zawartości etykiet tekstowych (np. tekstu ustawionego przez skrypt Lua lub opisu innego użytkownika z przycisku presence)
- bezpośrednie połączenia IP nie wymagają prefiksu "sip:" dla celu połączenia w formacie IP:PORT
- poprawiony błąd z suwakami głośności audio w oknie ustawień przesuwającymi się w lewo przy kolejnej akceptacji ustawień przy niskiej głośności (błąd zaokrągleń)
- dodane okno konfiguracji kontenera przycisków; zastępuje dwie wcześniejsze pozycje menu kontekstowego przycisków (ustawianie/czyszczenie bitmap)
- dodana możliwość ustawiania koloru tła kontenera przycisków (lżejsze niż bitmapa ale często wystarczające)
- obsługa wielu równoczesnych połączeń:
- dodana opcja automatycznego odrzucenia połączenia przychodzącego jeżeli inne połączenie jest aktywne
- przyciski "LINE": powrót do ustawionych przez użytkownika etykiet w stanie jałowym
- każde połączenie dysponuje osobną instancją odtwarzaczy wave (ring, ringback, itp.) eliminując potencjalne problemy
- 2024.03.28 tSIP_0_3_03_bin.zip, tSIP_0_3_03_video_bin.7z, tSIP_0_3_03_src.7z
- poprawiony wyjątek po użyciu przycisku "Mute Ring" gdy żadne połączenie nie jest aktywne
- funkcja "Mute Ring" działa dla wszystkich aktywnych połączeń
- poprawiona niezamierzona zmiana przy wersji ~0.3: combobox wybierania nie był czyszczony po zakończeniu połączenia
- Lua:
- poprawiona funkcja GetCallInitialRxInvite()
- dodana funkcja ApplicationHide()
- dodana funkcja GetCallUidFromLineButton(buttonId) - pozwala stworzyć przycisk skryptowe skojarzone z konkretnymi przyciskami LINE
- dodana funkcja GetButtonHandle(buttonId) - pozwala przekazać uchwyt przycisku (Windows HANDLE) do pluginu tSIP_mpv.dll
- kilka innych drobnych zmian i poprawek
- 2024.05.17 tSIP_0_3_04_bin.zip, tSIP_0_3_04_video_bin.7z, tSIP_0_3_04_src.7z
- dodane nowe typy przycisków do interfejsu pluginów/telefonów fizycznych (w związku z obsługą Philips VOIP1511 USB)
- pokazanie/ukrycie aplikacji (przycisk "Skype" na Philipsie)
- przełączenie mute na stan przeciwny
- odebranie połączenia; może wydawać się dziwne że nie było tego, ale wcześniej używany był tylko przełącznik widełek mikrotelefonu
- odrzucenie/rozłączenie połączenia
- użyta kolejka dla odseparowanie wątków pluginów od wątku VCL przy przekazywaniu zdarzeń
- poprawiona obsługa skryptów "on recording state" (zepsuta 0.3)
- Lua: dodana funkcja GetCallButtonId(callId): call id -> przypisany button
- usunięty moduł winwave (zastąpiony zupełnie winwave2)
- przejście powinno być bezproblemowe, scripty akceptują obie nazwy modułów wybierając zawsze winwave2
- dodane nowe kontenery przycisków
- na panelu z przyciskami Answer/Hangup
- w oknie powiadomień traya, przykład użycia: odebranie połączenia z domofonu i odtworzenie zapowiedzi audio dla wchodzących
- uwaga: menu kontekstowe (dla wszystkich 4 kontenerów naraz) mogą być wyłączone z okna Settings/Tray Notifier
- dodane dodatkowe ustawienia okna powiadomień traya
- rozmiar okna
- ukrywanie/przesuwanie standardowych elementów okna - mogą one być zastąpione w całości programowalnymi przyciskami
- kilka drobnych ulepszeń dla okna konfiguracji kontenera przycisków
- BREAKING: okno powiadomień traya nie posiada ustawienia bitmapy tła - zastępiła je bitmapa tła kontenera przycisków umieszczonego teraz w tym oknie
- dodane ustawienie "transparent" dla bitmpapy tła kontenera przycisków
- dodane nowe typy przycisków, "Make or answer the call" i "Answer the current call"
- dla przycisków typu "Blind transfer": cel przekazywania może być ustawiony w konfiguracji przycisku, jeżeli jest pusty - brany jest numer z okna głównego, "Transfer to..." jak dotychczas
- FIXED: hint/domyślny tekst pola edycji celu przekazywania be anansowania nie był pokazywany przy starcie
- hint/domyślny tekst pola edycji celu przekazywania może być przetłumaczony na inne języki
- poprawiona obsługa re-INVITE / aktualizacji CLIP/COLP z P-Asserted-Identity, zepsuta w wersji 0.3
- połączenie nie jest rozłączane przy błędzie audio lub końcu pliku audio jeżeli w skrypcie lua obsługi błędu wywołana zostanie funkcja SetHandled(1), bez względu na stan ustawienia Calls/DisconnectCallOnAudioError
- dodane nowe typy przycisków do interfejsu pluginów/telefonów fizycznych (w związku z obsługą Philips VOIP1511 USB)
- 2024.09.16 tSIP_0_3_05_bin.zip, tSIP_0_3_05_video_bin.7z, tSIP_0_3_05_src.7z
- dodany wybór transportu dla outbound proxy
- poprawiona utrata pakietów RTP H.264 (ustawiane SO_RCVBUF)
- dodana funkcja Lua SwitchAudioSourceToConfigured(OPTIONAL_callUid)
- poprawione zakańczanie i przełączanie źródeł audio dla funkcji strumieniowania RTP multicast/unicast (zepsutej w 0.3)
- 2024.10.14 WS2812.dll - sterowanie paskami LED
- 2024.10.16 tSIP_0_3_06_bin.zip, tSIP_0_3_06_video_bin.7z, tSIP_0_3_06_src.7z
- poprawiona konfiguracja stylu fontu przycisków, dodane efekty underline i strikeout
- poprawka: przyciski auto-answer/DND nie były ustawiane w stan wciśnięty po restarcie
- użycie kierunku SENDONLY dla funkcji hold
- video, avformat: poprawione przepełnienie vidts dla odtwarzania mp3
- video, avformat: poprawione odtwarzanie plików mp3 z okładką albumu zapisaną jako MJPEG
- video: poprawiony wyjątek przy użyciu generatorów plansz testowych i nullvideo
- 2024.11.24 tSIP_0_3_07_bin.zip, tSIP_0_3_07_video_bin.7z, tSIP_0_3_07_src.7z
- BLF + presence: dodane obejście błędu FreeSWITCH #1532
- FIXED: dodane skalowanie GUI dla okna powiadomień traya
- Lua:
- dodane funkcje GetCallDurationFromStart() i GetCallDurationFromConfirmed()
- dodana funkcja winapi.GetAdaptersInfoIp()
- pomijana pusta linia Supported w wychodzących wiadomościach (zawieszało to urządzenia Zenitela, ale nie spodziewam się by te urządzenia dostały poprawki)
- poprawki obsługi zestawów słuchawkowych HID, głównie w związku z wprowadzeniem równoczesnej obsługi wielu połączeń
- dodane opcje ukrycia przycisków Call/Answer i Hangup
- kilka innych drobnych zmian i poprawek
- 2025.01.26 tSIP_0_3_08_bin.zip, tSIP_0_3_08_video_bin.7z, tSIP_0_3_08_src.7z
- menu kontekstowe przycisku: dodana opcja przesuwania grupy przycisków (przycisk pełniący funkcję ramki / grupujący przycisk o wyższym ID wewnątrz)
- przesuwanie i zmiana rozmiaru przycisków:
- [Enter] akceptuje bieżącą pozycję ([Esc] anuluje)
- strzałki mogą być użyte do przesuwania kursora o 1 piksel
- przy edycji kursor przesuwany jest do poprzedniej pozycji zakotwiczenia przycisku
- na panelu ilustrującym edycję przycisku przy przesuwaniu/zmianie rozmiaru wyświetlane są pozycja (X, Y) i rozmiar (W, H)
- poprawiony błąd uniemożliwiający zatwierdzenie edycji lewym kliknięciem w pewnych pozycjach (np. gdy trzymany jest Shift aby zignorować grid)
- 2025.05.13 tSIP_0_3_09_bin.zip, tSIP_0_3_09_video_bin.7z, tSIP_0_3_09_src.7z
- dodana funkcja Lua GetCallReason()
- dodana opcja zupełnego wyłączenia funkcji wiadomości tekstowych (SIP SIMPLE MESSAGE)
- poprawione rozpoznawanie pełnej formy SIP URI przy wysyłaniu wiadomości tekstowych SIP SIMPLE
- poprawiona (dla kompatybilności wstecznej) funkcja Lua GetCallState() zwracająca nil zamiast 0 / CALL_STATE_CLOSED przy braku bieżących połączeń
- 2025.09.16 tSIP_0_3_10_bin.zip, tSIP_0_3_10_video_bin.7z, tSIP_0_3_10_src.7z
- dodane tłumaczenia na język serbski, dwa warianty: Latin + cyrylica, podzękowania dla pedjas
- menu popup kontenera przycisków
- podzielenie przycisków na grupy po 25 w każdej
- dodana nazwa kontenera
- dodana opcja "Bring button here" option jako nowa metoda układania przycisków, zmiany ich pozycji, macierzystego kontenera i opcjonalnie zmiany właściwości visible
- gzrtp: zwiększony bufor mbuf
- dodana konfiguracja stylu wyświetlania remote identity display (caller/callee identification + call direction) dla każdego przycisku BLF,
umożliwiająca wyświetlenie zarówno numeru jak i nazwy remote identity
- BLF remote identity display: wyodrębnianie CLIP/numberu z URI
- usprawnienia edytora LUa
- dynamiczne dodawanie specyficznych dla klienta funkcji Lua jako słów kluczowych na potrzeby podświetlania
- klawisz F1 otwiera okno pomocy przy wskazaniu funkcji Lua specyficznej dla klienta
- opcja dodająca znaczniki czasu do każdego wywołania logowania
- dodana funkcja Lua UpdateButton(buttonId, json)
uwaga: przy zdefiniowaniu kilku przycisków BLF subskrybuujących ten sam zasób tworzona jest tylko jedna subskrypcja SIP; zduplikowanie przycisków nie zwiększa obciążenia centrali - 2025.11.29 Plugin obsługujący telefon USB Polycom CX300
- 2025.12.04 tSIP_0_3_11_bin.zip, tSIP_0_3_11_video_bin.7z, tSIP_0_3_11_src.7z
- biblioteka openh264.dll jest od teraz dystrybuowana bezpośrednio ze względu na wygaśnięcie patentów w większości krajów
- poprawione kilka logów przy włączonych znacznikach czasu
- usunięty nieużywany atrubut "label" z SDP
- dodane tłumaczenie na język turecki (podziękowania dla mahirgul)
- dodana funkcja redial do interfejsu pluginu - użyta w pluginie obsługującym Polycom CX300
- dodane przekazywanie informacji MWI (stan poczty głosowej) do pluginów - w przypadku telefonu Polycom CX300 steruje diodą LED zintegrowaną z przyciskiem [1]
- dodany typ przycisku VOICEMAIL do interfejsu pluginów, powodujący dzwonienie na numer z pierwszego znalezionego przycisku MWI - dla Polycoma CX300 wywołane przy długim wciśnięciu przycisku [1]
- konfiguracja przycisku MWI: pokazany numer główny, usunięta strona ustawień BLF
- dodana funkcja Lua Redial()
- zwiększony domyślny rozmiar okna edytora skryptów
- kilka innych drobnych zmian
RecordViewer.exe - narzędzie do przeglądania nagranych rozmów
Uwaga: tSIP w wersji 0.3.10 i niższej z obsługą wideo wymaga biblioteki openh264.dll która ze względów licencyjnych musi być ściągnięta ze strony Cisco. Ściągnij openh264-2.3.1-win32.dll.bz2, rozpakuj (używając np. 7-zip), zmień nazwę pliku openh264-2.3.1-win32.dll na openh264.dll i umieść go obok pliku tSIP.exe.
tSIP na githubie