Push notifikace a Linphone

Programy, které slouží k volání přes internet z počítače nebo chytrých mobilů.
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Tak, konečně mám verzi LinPhone na vyzkoušení. Zatím používám vlastní projekt na Firebase a tihle údaje jsem vozil do mého LinPhoneu a dokážu poslat mu notifikaci s kouskem Pythonu.

Kód: Vybrat vše

#!/usr/bin/python3 -B

import firebase_admin
from firebase_admin import messaging
tokdir='/work/sour/android/tmp/'

cred_obj = firebase_admin.credentials.Certificate(
#tokdir+'test-send-b2434-firebase-adminsdk-1mutn-a5223f0525.json')
 tokdir+'test-send-b2434-firebase-adminsdk-1mutn-4a909a44f9.json')
firebase_admin.initialize_app(cred_obj)

# This registration token comes from the client FCM SDKs.
with open(tokdir+'linphone-instance-token.txt', 'r') as file: registration_token = file.read().strip()

# See documentation on defining a message payload.
message = messaging.Message(
    notification = messaging.Notification(
        title = '-title-',
        body = '-body-',
    ),
    android = messaging.AndroidConfig(
        priority = 'high',
    ),
    token = registration_token,
)

# Send a message to the device corresponding to the provided
# registration token.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
Soubor linphone-instance-token.txt obsahuje prid z registrace k proxy, a soubor test-send-b2434-firebase-adminsdk-1mutn-4a909a44f9.json obsahuje soukromý klič od Firebase. @xsouku04 , napište jak mám poslat ten apk a klíč, a můžete ihned vyskoušet. Já jsem použil Python knihovnu od Firebase, ale klidně můžete použit Ruby knihovnu nebo přímo POST URL, asi stačí vložit json do toho URL.

Edit: vlastně asi je potřeba knihovna, už jsem zapomněl že potřeba vytvořit ten oath token, a tom bude další zmatek.

Klidně budu s tím dale pomáhat, ale bude na vás založit Firebase účet a vytvořit klíč s novim jménem apky například Linphone Odorik - cz.odorik.linphone. Bude nutné splnit podmínky s licenci GPL 3.0 pro linphone-android a liblinphone a nějakém způsobem zveřejňovat ten apk.

Notifikace fungujou trochu jinak než jsme mysleli. U nových telefonu, notifikace nemůže vzbudit apku, vzbudí se až uživatel klikne na tu notifikaci. Až se vzbudí, proběhne registrace, invite, atd. Ale v pořádku, ta samotná notifikace může obsahovat zvonění a CLIP volajícího, nemusí se čekat na registrace a invite, telefon začne zvonit ihned jak obdrži ten push.
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

xsouku04 píše: čtv 04. dub 2024 12:05:19 Nyní tedy zbývá zjistit, jak je to s těmi klíči a jak to přesně použít. Pokud by Linphone fungoval s push notifikacemi spolehlivě a navíc bychom pro něj mohli udělat profisining. (tedy nastavování pomocí QR kódu) asi by to pak už nemělo chybu. Ale asi to nebude fungovat spolehlivě ze všemi telefony, protože některým telefonům fungují push notifikace se zpožděním.
Provisioning jsem zatím nebyl schopen udělat, protože jsem nebyl schopen z nerootnutého androidu dostat uložené konfigurační soubory. To by ale v případě vlastní kompilace neměl být problém.
Teť už by šlo zkoušet jak spolehlivě fungujou, a jak jsou rychlý notifikace. Rychlost ovlivňuje priority, musí být high aby byl rychlý. To se nastavuje v json, jak mám v Pythonu v posledním příspěvku. Zatim notifikace maji provizorní vzhled, ještě by se měli nastavit aby vypadali a zněly jako zvonění. To je popsaný na https://firebase.google.com/docs/refere ... s.messages . Ještě budu zkoumat jak je vylepšit.

Něco jsem četl o remote provisioning, nevim jestli zrovna přes QR kódy, ale je do toho zapojený Flexisip https://www.linphone.org/technical-corner/flexisip , který taky může fungovat jako push server, a je taky open source. Teť nemůžu najit odkaz na to remote provisioning, ale budu dale hledat.
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Beta Linphone a Flexisip s push od různých zdroje.

Už mi připadá že ten Linphone apk mi funguje i s push notifikace. Tak ho chci tady nabídnout pro vyzkoušení jako beta. Vzal jsem projekt z https://gitlab.linphone.org/BC/public/linphone-android vložil jsem soubor google-services.json s klíčem pro firebase push který jsem vytvořil. apk je k stažení z https://file.io/k5htT9bG5bPx

Jako proxy jsem využil Flexisip který se dá použít jako package bc-flexisip pro Debian nebo z projektu https://gitlab.linphone.org/BC/public/flexisip Nastavil jsem ho do nízkokapacitní vm od Google protože je nabízej zdara.

V Linphonu si nastavte Username = telefonní číslo v síti, Heslo, Domain = sip.odorik.cz, Allow push notifications, SIP proxy = sip:35.211.105.213:6688, Expire 604800

Zatím znám že jsou dvě problémy. Nevím kolik spojení zvládne ten vm, a taky může padnout kdyby budu něco v tom nastavovat. A ještě mi připadá že sip.odorik.cz nepřímá registrace na déle než dvě hodiny, nebo mi uniká nějaké nastavení. Tihle problémy by se dali překonat s pomoci od Odoriku.

Pokud to vyzkoušíte, napište jaký máte s tím zkušenosti.
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Screenshoty k nastaveni.
Přílohy
Screenshot.png
Screenshot.png (256.84 KiB) Zobrazeno 173 x
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Už používám tuhle verzi Linphoneu s push a funguje mi to hezky na příchozí a odchozí volání, až na to že odorik.cz mi vždy odhlásí registraci po dvou hodin. Je nějaký způsob jak se přihlásit déle? Dvě hodiny rozhodně nestačí, a apka to nemůže prodloužit když Android jí uspí. Na stránkách odorik.cz pod Vaše registrovaná SIP zařízení mám Expires: 604800 ale registrace vydrží maximálně dvě hodiny ať tam dám cokoliv.

Teď mi napadlo že zkusím dát na tu linku paralelní vyzvání na sip adresu toho proxy. Jen musím přijít na to jak spárovat ten invite s registrací v tom proxy.
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8161
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: Push notifikace a Linphone

Příspěvek od xsouku04 »

plasticassius píše: pon 22. dub 2024 9:27:06 Už používám tuhle verzi Linphoneu s push a funguje mi to hezky na příchozí a odchozí volání, až na to že odorik.cz mi vždy odhlásí registraci po dvou hodin. Je nějaký způsob jak se přihlásit déle? Dvě hodiny rozhodně nestačí, a apka to nemůže prodloužit když Android jí uspí. Na stránkách odorik.cz pod Vaše registrovaná SIP zařízení mám Expires: 604800 ale registrace vydrží maximálně dvě hodiny ať tam dám cokoliv.

Teď mi napadlo že zkusím dát na tu linku paralelní vyzvání na sip adresu toho proxy. Jen musím přijít na to jak spárovat ten invite s registrací v tom proxy.
To dobu registrace omezujeme u nás max na dvě hodiny, tedy bylo by to řešitelné, abychom dovolili delší dobu. Ale i kdyby to bylo téden, tak jednou se program bude muset probudit a znovu zaregistrovat. Ten flexisip to neumí zařídít a a plikace probudit předtím než registrace expiruje?
My máme vlastní implementaci něčeho jako fexisip a ten náš to umí.

Teď je otázka, jestli se push opravdu používá a nebo jen linphone prostě neusíná? Dá se to nějak ověřit? A není někde popsáno, jaké jsou možnosti vyřešit tu expiraci registrace?
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Já nejsem žádný Linphonský znalec, ale je dost možné že Flexisip umí aplikaci budit abi se přeregistrovala. Ale, jaký koliv proxy nemá přihlašovací údaje, tak to nemůže udělat bez pomoci aplikaci. Jak to zvládáte když telefon je nedostupný více než dve hodiny? Asi apka musí být vzbuzená samotným telefonem kdykoliv se obnoví připojení.

Push se rozhodně použivá, mám i kopii tvaru notifikace které Flexisip posílá, a kdy se to povede a nepovede kvůli chyby v certifikátu atd. Na straně apky, je pravda že se snaží nespat a Android si stěžuje že žere baterku. Já jí vykopávám s paměti a po asi hodině, push jí probudí, vidím že se registruje a pak zvoní když Flexisip pošle push. Když nepošle, tak telefon je nedostupný.

Je možné že je někde popsáno jaké jsou možnosti vyřešit tu expiraci registrace. Ještě zkusím něco o tom najít. Taky by se hodilo aby se apka nechala klidně uspat a nežrala baterku.
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Zatim jsem nepřišel na to jak Flexisip by poslal push aby vzbudil apku ale myslim že na to neni nastavení. Wiki u Linphonu doporučuje nastavit dobu registrace na týden a asi se předpokládá že se apka se vzbudí dříve kvůli použití. Ale, třeba tohle neni potřeba od Flexisipu když by jste používaly vaše vlastní implementaci. Dosud jsem Flexisip používal bez úprav, jen s vlastním nastaveni.

Zkusil jsem přeposílat invite od Odoriku na Flexisip, ale v inviteu chibi parametr který Flexisip používá k spárování s původní registraci. Tohle by mělo fungovat i po expiraci registrace, ten parametr je v tvaru ;CtRtXXXXXXXXXXXXXXXX=udp:sip.odorik.cz kde XXXXXXXXXXXXXXXX je kód přes který Flexisip pozná kam poslat ten invite. Na stránce Rychlé kontakty (speed dial) mi to nenechá přidat k url.

Přišel jsem na to že apka mi nespala protože posílala stay-alive pakety každých 30 vteřin. Vypnul jsem to s remote provisioning, ale to nastavím jako default aby to s tím neotravovalo. Náhodou, remote provisioning je dost jednoduchý. Klidně by mohl být QR kód na stránce se sip nastavením.
plasticassius
Příspěvky: 13
Registrován: sob 10. úno 2024 11:08:57

Re: Push notifikace a Linphone

Příspěvek od plasticassius »

Tak, Flexisip vlastně umí probudit apku aby se pravidelně registrovala. Nevím jak jsem to mohl přehlídnout, je to dost jasní. Asi těch možností je moc. Tet bych řekl že je vše v dobrém stavu na použití.

Flexisip je připravený, apk je zatím stejný. Jen je potřeba nastavit Expirace na 7200 pro Odorik účty.

Je možné vypnout keep-alive přes načtení vzdálené konfigurace pod průvodcem a použití přiložení QR kód, pak to bude spát a nebude žrát baterku.
Přílohy
linphone_keep-alive-off.png
linphone_keep-alive-off.png (548 bajtů) Zobrazeno 98 x
Odpovědět