Klient SIP (VoIP softphone) dla Windows
Prosty klient SIP oparty o projekt re/rem/baresip udostępniany przez creytiv.com na bardzo liberalnej licencji.
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
- fixed regression (0.1.35) in single channel call recording
- added baresip aufile (wave file as sound source) adapted to Win32
- presented as another (next to WaveIO and Portaudio) sound module for audio input
- requires S16LE, 1ch, 8kSps wave file, located in application directory
- call is disconnected at the end of file
- allows making call with no system sound device (MB with jack auto detection)
- poor man's voicemail (when combining announcement with silence at the end with call recording and auto answer)
- ACTION_SHOWWINDOW (SHOWWINDOW command line parameter) - bring application from tray
- new setting in "General" page: single instance (bring previous instance to front if already running); uses SHOWWINDOW action and same mechanism as 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: inconsistent application state when handling incoming REFER (call being transferred)
- added simplified handler for out-of-dialog REFER - this is supposed to work with ANVEO CTI; as this seems little dangerous this is opt-in feature with new settings in "Calls" tab added; node: depending on setup using "Answer any" account option might be required
- added kiosk mode ("General" tab)
- added new button types: show settings (blocked if "Hide settings" is used), minimize, show log and exit
- increased max value allowed for GUI scaling setting to 500%
- fixed scaling for phonebook and call history list columns width
- added "Hide mouse cursor" option ("General" tab)
- added option to set 2 caption lines for programmable buttons, e.g. description + number for BLF button
- 2017.10.11 tSIP_0_1_60_2_bin.zip, tSIP_0_1_60_2_src.7z
- added separate audio output device selection for ring (incoming call)
- application version is stored in configuration to help with seemless upgrade (now: copying alert sound device to ring sound device for older version)
- 2017.11.01 tSIP_0_1_60_3_bin.zip
- added "nullaudio" input (generating silence) and output (discarding samples) audio device; intended to be used on machines with no audio I/O, e.g. with no microphone connected and autosensing jack, virtual machines or when running as service
- 2017.11.12 tSIP_0_1_60_4_bin.zip
- added "Display"/"Decode Display Name (UTF) to local (ANSI) code page" parameter
- 2017.12.23 tSIP_0_1_61_bin.zip, tSIP_0_1_61_src.7z
- attempt to remove bug related to TCP transport - reported 100% CPU load on disconnection, seemingly fixed by additional conn_close(tc, 0) in tcp.c on recv() error
- Settings/Calls: custom/extra header lines can be added to outgoing INVITEs (e.g. Call-Info with answer-after or Answer-After to make second party answer call automatically)
- 2018.04.06 tSIP_0_1_62_bin.zip, tSIP_0_1_62_src.7z
- removed "tool" line from SDP - suspected to be causing "488 SDP Parameter Error In SIP Request" error when calling using t-mobile.de operator
- settings: added GUI scaling for tray notifier window
- added Lua ShowTrayNotifier(description, uri, incoming) function (mainly for testing)
- neither Answer nor Hangup button is active by default in tray notifier window
- FIXED: bug in limiting tray notifier window position resulting in not restoring previous position if notifier was near the screen right/down edge
- interoperability (supervoip.pl, some other German operator): using username as default contact name if contact name is empty instead of semi-random contact name based on memory address
- "level" label in settings disabled for audio preprocessing
- added hints for volume reset buttons
- settings window moved from desktop center to screen center position
- added Settings/Delete call history menu item (deleting immediately history file content and clearing items from dial combobox)
- Log and "About" windows can be closed with Esc
- if call is closed from reason other than normal disconnection - call state label displays reason (e.g. "488 Not Acceptable Here", "480 Temporarily Unavailable") for 8 seconds
- 2018.05.19 tSIP_0_1_62_4_bin.zip
- added options to hide "View" and "Help" menu (limiting access for the operator together with option to hide settings menu)
- new command line option: PROGRAMMABLE_BTN_xxx (i.e. "tSIP.exe /tsip=PROGRAMMABLE_BTN_023") - simulating programmable button with ID = xxx (0...100+) being pressed
- added Lua GetUserName() function, returning user name from configuration - intended to be used to differentiate instances, e.g. fetch list of numbers to call from shared folder with path depending on user name / login
- FIXED: due to hazard between callback and control queues ring audio might be started after call ended (for calls with CANCEL immediately after INVITE) and not stopped; forcing ring stop on end of call event
- new settings: "Show main form when answering call" and "Hide tray notifier when answering call"
- added "General (2)" settings tab
- 2018.07.21 tSIP_0_1_63_bin.zip, tSIP_0_1_63_src.7z
- Lua: added ProgrammableButtonClick(buttonId) function - simulating clicking on specified button
- numeric code is added to text (quite often meaningless "Unknown error") generated by strerror
- registration client: reduced "failwait" saturation time, i.e. maximum time to retry registration from 1800s to 300s (time is randomized and increases exponentially up to this limit)
- subscription client: removed RESUB_FAILC_MAX limit, added "failwait" similar to registration with 900s limit
- 2018.11.12 tSIP_0_1_64_bin.zip, source: tSIP-0.1.64.zip
- added "logrotate" mechanism; configuration: number of old files to keep (0...5)
- added queues as new mechanism for connecting scripts and plugins (similar to variables)
- added Lua FindWindowByCaptionAndExeName(caption, exeName) function
- added sxmlc library source to re
- BLF buttons can now show remote identity and call direction (number calling / number called) as 2nd line (opt-out)
This feature seems to be supported by FreeSWITCH and with some issues by FreePBX - fixed few error log lines
- 2018.11.12 tSIP_0_1_64_1_bin.zip
- FIXED: BLF interoperability with FreeSWITCH (missing "terminated" icon)
- 2019.01.29 tSIP_0_1_65_bin.zip, source: tSIP_0_1_65_src.7z
- FIXED: nullaudio audio output module not working in release build due to unitialized variable
- FIXED: project dependency on gsm.lib not showing in IDE
- command line: target starting with "sip:" is treated as direct IP call
- FIXED: (repeated) delayed auto-answer on answer error
- added options to set custom application title and main form caption
- added speex resampler to aufile (wave file) audio input module
- added window ("Tools" menu) for script editing / ad hoc scripting based on Scintilla (this is making script plugin obsolete)
- script editor can be used directly from settings window (script assignment) editing existing script or creating new one
- rewritten reading main config and button config file - using previous values as defaults when reading JSON
- added RefreshAudioDevicesList() and GetAudioDevice() Lua functions
- added UpdateSettings(jsonText) Lua function
- 2019.04.14 source: tSIP_0_1_66_src.7z
- separated few settings into "Locking" tab (kiosk mode and other settings disabling functionality)
- added "Hide Tools menu" option
- fixed wrong interpretation of number of console column settings (broken in 0.1.65)
- corrected main window height to match exactly default console buttons height (broken in 0.1.65)
- added Lua WinAPI GetAsyncKeyState() function - allowing to e.g. modify script button action depending on Ctrl/Shift/Alt state
- added options to record only one side of the call (local or remote)
- extended Lua RecordStart(file, channels, side) function; third (optional) argument specifies which side(s) of the call should be recorded (0 = both/mixed, 1 = local, 2 = remote); third parameter applies only to single channel recording (channels = 1), otherwise call parties are recorded in separate left/right channels as previously
- added command line option to specify settings/profile directory; allows sharing single exe by multiple instances or multiple users; example: tSIP.exe /profiledir="E:\zrzut\aa bb"
- added Lua funcion: GetProfileDir()
- added "Hide tray notifier when call is auto-answered" setting
- FIXED: UTF8 decoding not applied to BLF remote identity display name
- added P-Asserted-Identity handling
- added REINVITE event handling (updating CLIP from PAI)
- added BLF settings: "Keep previous remote identity info if remote identity is missing in notification" and "Ignore or clear remote identity if call state is set to terminated"
- added Lua PlaySound() function (WinAPI equivalent in tsip_winapi module)
- script window accepts file drag-and-drop
- added "on programmable button" script event and "SetHandled" Lua function
- added Lua GetButtonType(btnId) and GetButtonNumber(btnId) functions
- 2019.04.15 tSIP_0_1_66_1_bin.zip
- FIXED: missing checking if "on programmable button" event script was set
- 2019.05.25 tSIP_0_1_67_bin.zip, source: tSIP_0_1_67_src.zip
- FIXED: missing checking if "on programmable button" event script was set (problem of 0.1.66)
- added separate width setting for each speed dial column
- added missing onClick handler to label2 of programmable button
- using PAI from 200/OK reply (updating calee number/name after pickup)
- added Help/Troubleshooting function
- added main window height setting
- added option allowing to hide speed dial toggle button
- added option modifying behavior on audio error (not disconnecting call) - Call settings tab
- added "on audio device error" script event
- added audio device error event to plugin interface
- extended plugin interface with capability of running scripts
- extended plugin interface: SetProfileDir(dir) function
- change wav audio source: releasing input file immediately after reading
- FIXED: error handler possibly not being called for resampled aufile
- prevent divide by zero exception if switching to nullaudio before CONFIRMED state
- new plugin: Text-To-Speech input (see github)
- 2019.07.17 tSIP_0_1_68_bin.zip, source: tSIP_0_1_68_src.7z
- added options hiding sensitive account settings
- intended to increase security when using on shared PC
- selected settings are not visible in GUI and not stored in file
- double click on plugin list enables/disables selected plugin
- added math.random() to Lua call loop example
- added setting to not use "sip:" as direct IP call mark from command line
- added "Show main form when making call" option, intended to be used when making call with global shortcut, command line or protocol handler
- moved some code into common.lib project
- Troubleshooting function: added checks for no and too many codecs
- call history: added settings to prefer PAI information for display and for dialing
- scripting: break signal is sent to running scripts before exiting application
- fixed tab order in contact editor window
- added hint with additional info for call history entries
- default configuration / first run: added extra button with hint that buttons can be edited with right-click
- added options hiding sensitive account settings
- 2019.09.07 tSIP_0_1_69_bin.zip, source: tSIP_0_1_69_src.7z
- added option formatting call duration in call history as minutes:seconds
- added codec name to history (hint, opt-out)
- storing history window list column widths in settings
- Lua: added codecName = GetCallCodecName() function
- added hints to software volume constrol sliders
- added scaling to main window height setting (may need manual changing when upgrading if scaling was other than 100%)
- Lua: added PluginEnable(dllName, state) function, e.g. PluginEnable("TTS.dll", 1)
- account settings: added configuration (RFC2833 / SIP INFO) for "DTMF" transmit method
- added configuration for logging window font (default font looked ugly under Wine)
- jsoncpp.lib: added few convenience functions and AnsiString handling
- Lua: added MainMenuShow(state) function (state = 0/1)
- added options ("Locking") hiding main menu and status bar
- FIXED: browser integration: previous window not being found if custom window caption was used
- FIXED: browser integration: commands from links like tsip:HANGUP not working
- scripting: added second timer as event source
- Lua: added SetButtonCaption2(btnId, text) function
- Lua: added state = GetButtonDown(btnId) function (state = 0/1)
- script window: added example determining event source type and id for script
- increased command and callback queues sizes to 1024
- mechanism for sending sustom requests
- Lua: requestId = SendCustomRequest(uri, method, extraHeaderLines), e.g.<br>
- local requestUid = SendCustomRequest("sip:192.168.1.12", "OPTIONS", "Accept: application/sdp\r\nContent-Length: 0\r\n\r\n")
- Lua: ClearCustomRequests() - deleting state of all custom requests
- Lua: DeleteCustomRequest(requestId)
- Lua: uri, method, extraHeaderLines = GetCustomRequest(requestId)
- Lua: haveReply, error, sipStatusCode = GetCustomRequestReply(requestId)
- Lua: replyText = GetCustomRequestReplyText(requestId)
- "on custom request reply" script event
- script window: example for scanning local network with OPTIONS
- some effort to improve aufile work on low-end PC (Atom N270, L16/44100, 10ms framing) - using waitable timer
- some code cleanup and reorganization for tSIP.exe project
- 2019.11.05 tSIP_0_1_70_bin.zip, source: tSIP_0_1_70_src.7z
- added aufile_mm audio source module (wave file with multimedia timer - working better on low end PC)
- Lua:
- added ApplicationClose()
- added SetCallTarget(target) for preprocessing number with "on make call" script event, e.g. removing some of the pasted characters
- added "Do not pass parameters to previous instance" setting (example use: launch application for single call and forget, closing application after the call)
- add button opening recordings folder
- FIXED: plugin profile directory was not updated on plugin reload
- HWND_TOPMOST/HWND_NOTOPMOST trick bringing window to front on incoming call
- Troubleshooting: add checking for Windows private IP
- more convenient network interface selection - interfaces list
- stopping wav playback (e.g. busy.wav) on Hangup button
- added winwave2 module - thread-based
- added simple AGC for RX direction
- added portaudio suggestedLatency settings
- FIXED: problem with tray notifier not closing when application was minimized
- FIXED: wrong call history entry on outgoing unanswered call if PAI was used
- added very basic support for call messaging
- 2020.01.27 tSIP_0_1_71_bin.zip, source: tSIP_0_1_71_src.7z
- using ofNoChangeDir for open/save dialogs, disabled ofHideReadOnly for open dialogs
- Lua: added GetAudioErrorCount() function, returning counter incremented when audio file ends
- Lua: added GetAudioRxSignalLevel() function
- added "Lenny" example
- extracting number from PAI also on outgoing calls
- added button opening script editor for programmable button edit window
- settings window: separed few items from "General" to "Branding" tab
- added Opus codec
- FIXED: no playback for short aufile files
- winwave play: trying to keep audio frame size more consistent
- moved dynamic modules loading before account initialization (fixing problem with G729.dll)
- added option enabling additional aubuf debugging logs
- Lua: added ReadContacts() functions, re-reading whole phonebook from JSON file
- 2020.05.01 tSIP_0_1_72_bin.zip, source: tSIP_0_1_72_src.7z
- file (path) can be assigned to each contact / phonebook entry
- new button type: "Contact file" - opening (using ShellExecute "open") file associated with last contact entry on request
- options to automatically open file associated with contact on incoming / outgoing call
- added "on contact note open" script event and AppendContactNoteText Lua function
- added display name configuration for account
- selected but not found audio device (e.g. detached USB device) is shown on the lists with [NOT FOUND] text
- FIXED: log file size setting
- added Portaudio locking (possible crash if audio devices are enumerated in script e.g. on startup)
- hotkey editor: hidden ID selection if not applicable for particular action type
- FIXED/improved: MESSAGE to window matching for incoming text messages (IM)
- added target display to text message window caption
- added sound played on incoming MESSAGE
- passing back status for sent MESSAGE, displaying in windows if status is other than SIP/200
- FIXED: ringtone files not being updated if edited manually
- added bitmaps/icons from Andi Topp (/img subdirectory, opt-in)
- bitmaps for buttons from main window (backspace, microphone, speaker) are now configurable
- added window for patching settings with JSON - paste part of configuration or drop JSON file to change configuration without looking through settings window
- added new button type: user agent restart
- added new button type: send text message (IM)
- Lua scripting: added SendTextMessage(uri, text, sendImmediately) function
- 2020.06.29 source: tSIP_0_1_73_src.7z
- plugin interface: added function allowing adding tray context menu item from plugin, making tSIP suitable to work as host for general purpose plugins
- plugin interface: added function setting application status
- new plugin: HTTPstatus - showing temperature/humidity/pressure from my sensor as tray hint
- new plugin: SystemShutdown - suspending (S3/S4) or turning off PC at specified time
- added Lua SetAppStatus function
- added inband DTMF generation option
- contact hist and call history: added options to send MESSAGEs
- added Lua example for SendTextMessage
- text editor in JSON configuration patching window changed to Scrintilla
- increased size of account audio codec list to 16
- jsoncpp: added Value::getString()
- handling incoming MESSAGEs: reply code and reason can be specified, softphone can be configured to not reply for incoming MESSAGE, generating timeout
- added Lua example sending single SIP request
- added StaticCheck.h / C++ STATIC_CHECK
- added pause function for recording
- new button types: recording start (starting with default parameters or resuming), recording pause
- new script event: on recording state
- Lua: added GetRecordingState(id) function
- added option to not restore taskbar button (hopefully helping with Windows RDP taskbar mess)
- show received reply status reason text for sent MESSAGE to the user
- minor changes for compatibility with early BDS2006 release, some cleanup, changed the way re compatibility with TC++ is achieved
- 2020.08.11 tSIP_0_1_74_bin.zip, source: tSIP_0_1_74_src.7z
- fixed some WIN32 typos from 0.1.73
- merged some re/rem/baresip updates
- change tray icon if initialization fails
- logging: clearing whole TRichEdit instead of removing oldest content line by line
- added Lua UpdateButtons(json) function
- added window for patching buttons configuration
- automatic restart on initialization error (e.g. temporary problem with network card resulting in bind failure)
- few other minor fixes
- 2020.10.28 tSIP_0_1_75_bin.zip, source: tSIP_0_1_75_src.7z
- contacts: differentiate popup menu depending on contact number/uri count
- added option to not create tray icon
- added option to hide dialpad
- changing tray icon on registration error
- fixed resizing of contact editor window: added constraints, changed anchors, changed labels text
- translation mechanism (only for few base controls at the moment)
- JSON translation files (structure: key -> text) in translations subdirectory
- UTF8 to ANSI conversion - depends on current code page for non-Unicode applications
- translation file selection: "General" settings tab
- added translation to TfrmTrayNotifier
- tray notifier: hide "Answer" button if call is confirmed
- option to start/pause recording from command line (or browser)
- added import of Yealink-like XML phonebook
- added Lua example fetching with curl and loading XML phonebook
- added option to log only first lines of SIP messages
- added option to skip encoding number in recording file with base64
- few other minor fixes and changes
- 2020.12.08 tSIP_0_1_76_bin.zip, source: tSIP_0_1_76_src.7z
- added German translation - thanks to Andi Topp (www.comfine.de)
- added option changing main window layout - call controls in dialpad
- added dialing combobox sorting order setting: by number/time
- added option to do not change tray notifier position
- added new button type: auto answer/DND (depending on SIP code)
- added luacheck integration to scripting window
- made SetHandled(0|1) work for "on make call" script
- added logs with error reasons for calling from command line
- accepting/processing script from command line (/tsip=SCRIPT=xxx) [opt-in]
- FIXED: button configuration not being saved after Lua UpdateButtons()
- restarting UA if needed after updating button settings
- fixed some of the luacheck warnings from script examples
- FIXED: UDP transport being used instead of TCP for some calls
- measuring button configuration read (OutputDebugString at the start) and write times (log)
- 2021.02.07 tSIP_0_2_00_bin.zip, source: tSIP_0_2_00_src.7z
- big changeset focused on GUI customization and kiosk-like applications
- [BREAKING] not all settings are kept when upgrading - please backup tSIP.json and tSIP_buttons.json before updating executable; as there are major changes you might also consider delaying update
- changed overall application layout - console is now main part of the window, main panel (dialpad, etc.) is on top of it
- buttons are now not organized in columns, can be moved and resized freely (context menu)
- two button containers: one small on the main panel ("Redial", etc. in default configuration), holding 15 buttons and large, covering whole window, holding 180 buttons
- button opening/closing console now changes main window size (hiding/uncovering part of the button container) and changes main panel position (allowing to e.g. "expand" console on the left side of main panel)
- new button container context menu
- new simple dialog window for copying button properties
- background bitmap can be assigned to button container
- added multiple new button properties:
- size and position
- visibility
- inactivity
- down/up state
- positioning for caption lines
- positioning for image
- font configuration for two caption lines
- bevel width + option to use custom, flat bevel
- state-depending colors for background, font and bevel
- extended Lua function list, mostly related to new button properties: SetButtonVisible, SetButtonInactive, SetButtonDown, SetButtonImage, SetButtonCaption2
- optimized button configuration saving (mostly affecting Debug/CodeGuard builds) - saving only properties different than default unless "saveAllSettings" option is used
- replaced "SpeedDialOnly" setting with set of "HideCallPanel" + "HideMainPanel"
- call controls panel and Dialpad/Contacts/History panel can be hidden and positioned independently
- new scripting event: "on programmable button mouse up/down", passing button id as source id
- Lua: added GetButtonMouseDown(buttonId) function
- separate background image setting for each button container
- showing button id and type on button popup menu
- 2021.02.23 tSIP_0_2_00_4_bin.zip, source: tSIP_0_2_00_4_src.7z - minor bugfix release
- removed button "noIcon" setting
- added button "labelLeft" setting
- FIXED: do not use initial button settings ("Redial", etc.) if settings exist (problem related to default settings not being stored in file since 0.2)
- added new hotkey action type: answer/hangup depending on call state (intended to be used with single button on BT headset)
- added French translation (thanks to Thierry Pimont)
- added Russian translation (thanks to 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)
RecordViewer.exe - narzędzie do przeglądania nagranych rozmów
tSIP na githubie