Здравейте,
Искам да споделя резултати и впечатления. Надявам се да съм полезен на някой.
Целта на занимавката е: SIP-to-GSM решение
За SIP клиент ползвам: CSipSimple под Android 4.3 върху Samsung Galaxy Note II
За хардуер: Huawei USB dongle K3765
За сървър: Asterisk 11.8.1
1. CSipSimple забива понякога, но това се случва само когато се опитвам да правя обаждане и интернет връзката до Asterisk сървъра е безобразно лоша. Иначе работи супер.
Всеки път когато правя обаждане през Андроид телефона използвам съвсем естествено вградения указател, имам една стъпка повече и избирам дали да се обадя през SIP или през мобилната мрежа. Ако SIP връзката до сървъра не съществува, директно прави обаждането през мобилната мрежа. Бих казал смело, че интеграцията на CSipSimple с Андроид в това отношение е отлична.
Не помня защо, но вграденият VoIP клиент в Андроид не даде добри резултати.
2. Тествах доста usb флашки и накрая се спрях на
Huawei K3765.
По време на тестовете се наложи да търся различни firmware-и и да разкодирам различни флашки чрез услугите на
https://www.dc-unlocker.com/ или с разни кодове, на които попадах в Интернет.
Има флашки, които не могат да се ползват за voice пренос изобщо макар да са посочени в сайта на chan-dongle, заради това, че firmware-a им не го поддържа. А има и такива, на които тази възможност е ограничена софтуерно чрез настройки на разни регистри.
За да съм 100% сигурен, че една флашка може да се ползва за voice и е разкодирана коректно ползвах Mobile Partner софтуера под Windows, и провеждах реални разговори. Така хем знам, че е разкодирана, хем, че поддържа voice.
Имаше една флашка, не е пред мен сега, която след няколко разговора така забиваше, че дори рестарт на сървъра не я оправяше. Трябваше да я вадя от USB слота.
В момента чакам E169 флашка, за която казват, че работи най-добре.
3. Ползвам Asterisk 11.8.1 заради възможността му да праща текстови съобщения на SIP peer-а дори и когато peer-a не осъществява обаждане. Това го ползвам за да може когато дойде SMS през мобилната мрежа директно да го получа на като текст на SIP клиента.
4. Понякога SIP клиента няма достъп до Интернет и съответно до Asterisk сървъра. За да не пропускам обаждания и SMS-и логвам всичко, което се случва в два текстови файла. И с баш скриптове ги чета и пращам съдържанието ред по ред до имейл.
Резултатът е, че имам реализирано SMS-to-email решение, но само в едната посока + missed call logger-to-email.
5. Проблеми
- Chan dongle може да чете SMS съобщенията по два начина. Но за целта ползва външна функция на linux средата за конфертиране на енкодинга (това нещо така и не го разбрах в дълбочина). Но резултатът за мен е, че ако някой ми прати SMS по дълъг от 160 символа и в него има знаци като Ș,ț,â, не мога да го разчета. Този проблем се обсъжда на няколко пъти в мейл листата на проекта, но за сега разработчикът няма ресурс да напише собствена библиотека за конвертиране на PDU формата на съобщенията в текст.
Аз лично намерих една библиотека на Python и си мислех, че мога да чета PDU SMS-ите в raw формат и да ги подавам на библиотеката за разкодиране, но не остана време.
- USSD комуникацията не можах да я подкарам. Може би е заради конкретния донгъл, който ползвам. USSD е тази комуникация, която ти дава възможност да пратиш *#_neshto_si_* команда на мобилната мрежа и да си спреш или пуснеш някакви услуги като call waiting и call forwarding.
- И едно нещо, от което страдам понякога - докато съм в обаждане и някой ми говори, ако аз почна да говоря, той не ме чува. Това е може би единственото нещо, което дразни понякога. Нямам представа от къде идва. Сякаш моя канал спира да съществува.
6. Всичкото това е тествано от различни точки на Европа, през разни wifi мрежи и летища и кафенета. Не може да се сравни с реална телефония, но е отлично, така че човек да говори със семейството си без да мисли за роуминг и без да моли дядо си на 80 години да си пуска скайпа.
Поздрави!
--Росен