![](https://habrastorage.org/files/04c/0e9/f28/04c0e9f288b444288ac25a67b1c2ce54.jpg)
Google Lab Labã³ã³ãã¹ãã®äžç°ãšããŠãèè Dmitry SenashenkoïŒ @DmitrySen ïŒã«ããèšäº ã
çŸåšãåžå Žã«ã¯å€ãã®ããŒã³ã³ãšãã®ã¡ãŒã«ãŒãããŸãã ãããŠãããã®ã»ãšãã©ã¯ã建ç©å ã®å°ççäœçœ®ã決å®ããããã«èšèšãããŠããŸãã ããŒã³ã³ãã¹ãŒãã±ãŒã¹ã«åã蟌ãã§ã空枯ã§ä¿¡å·ã§ããŒã³ã³ãæ€çŽ¢ãããšããã«ããŽãªã®èå³æ·±ãã¢ã€ãã¢ããããŸãã ããããåãããã°ãããã¡ãã®ããã«èŠããŸãã ç¬åµçã§äŸ¿å©ãªãã®ãæãã€ããŠåæã«å®è£ ãããã£ãã®ã§ãã ãã®ããããŠã§ããµã€ããšHabrã®ãªãã£ã¹ã§ã®ããã€ãã®æç¶ããšãç§ã®æã«ããiBKSããŒã³ã³ïŒ
![](https://habrastorage.org/files/15c/223/551/15c223551e924ab7825dd7d8a1dc3752.png)
ç¯å°ã«ã€ããŠã¯å€ãã®ããšãæžãããŠããŸãã äŸïŒã Googleã®ããŒã³ã³ãã©ãããã©ãŒã ã ããŒã1 ããŸãã¯ã Googleã®ããŒã³ã³ãã©ãããã©ãŒã ã ããŒã2 ãã ç¹°ãè¿ãã¯ããŸããããGoogleã®ããŒã³ã³ãã©ãããã©ãŒã ã§ããŒã³ã³ã䜿çšããAPIãä»ããŠæäœããããšã«ãªã£ãŠãããšèšããŸãã çŸå®ã«ã¯ãiããç¹åšããŠããŸããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
ç§ã®äººçã§ã¯ãé»åã¡ãŒã«ãhtmlãsmsãªã©ããµããŒããããã¬ãã©ããŒãšã€ã³ããªãžã§ã³ãIVRã䜿çšããŠããŸãã ãããã£ãŠãæ¢è£œã®ã¹ã¿ã³ãããããå¿ èŠãªæ©åšãªã©ãç°¡åã«å ¥æã§ããŸãã ãããŠããã®ãããã¯ã«å¯ŸããŠãããŒã³ã³ãé©å¿ããããã£ãã®ã§ãã
ã¢ã€ãã¢
ããã§ãããŒã³ã³ããªãã£ã¹ã®ãã¢ãžã®èªèšŒããŒãšããŠäœ¿çšãããšããã¢ã€ãã¢ãæãã€ããŸããã 誰ããç¥ã£ãŠããããã«ããã¹ãŠã®ãªãã£ã¹ã«ã¯ãé»åããã¯ä»ãã®ãã¢ãšå ¥ãå£ã«ãªãŒããŒããããŸãã ååŸæ¥å¡ã¯ã«ãŒãã®åœ¢ã®ããŒãæã¡ããã¢ã«å ¥ãããã«ãã®ã«ãŒãããªãŒããŒã«åãä»ããå¿ èŠããããŸãããã®åŸããã¢ãéããŸãã äžçã§ã¯ããã®ãããªãã¢ã®æ°ã¯æ°ååã«éããã«ãŒãã®æ°ã¯ãããã1å ã«ãªããŸãã å®éã«ãããã䜿çšããããšã¯ããŸã䟿å©ã§ã¯ãããŸãããã éèŠãªäŒè°ã«æ¥ãã§ããå Žåãã«ãŒããæœåºããïŒãŸãã¯ããã®ã«ãŒãã眮ãããŠãããªããžã§ã¯ãïŒè²¡åžãããã¥ã¡ã³ãã®ãããã©ã«ããŒïŒãæœåºããïŒã®ã«æéã浪費ããã®ã¯éåžžã«éå±ã§ãã
ãã ããå人ã®ãã±ããã«ã¯é»è©±ããããŸãã ãŸããäžéšã«ã¯ãã³ããã«ããšã¬ã¯ãããã¯ã¹ããããŸãã é»è©±ãå¿ããããããã«ãŒããå¿ãã人ã«äŒãæ¹ãç°¡åã§ãã ãããã£ãŠãã«ãŒããé»è©±ã«ããªãŒããŒãããŒã³ã³ã«çœ®ãæããæ¹ã䟿å©ã§çµæžçã§ãã ãã¡ããããã®æ¹åã«ã¯è¯ãã¢ã€ãã¢ããããŸãã
ããšãã°ãæçŽãªãŒããŒä»ãã®ãã¢ãã³ãã«ãé»è©±ã®NFCãªã©ã ããããNFCãã¯ãããžãŒã¯ãã¹ãŠã®ã¹ããŒããã©ã³ã«æèŒãããŠããããã§ã¯ãããŸããããBluetoothã¯ãã¹ãŠã®ã¹ããŒããã©ã³ã«æèŒãããŠããŸãã ãããã£ãŠãæè¡çã«ã¯ãã®ã¢ã€ãã¢ã¯å®éã«å®è£ ããæºåãã§ããŠããŸãã
ããã«ããã®ãœãªã¥ãŒã·ã§ã³ã«ãããåŸæ¥å¡ã®å¿«é©æ§ãåäžããŸãã ãã¢ã«è¿ã¥ããŠãã¢ããªã±ãŒã·ã§ã³ã¢ã€ã³ã³ãã¯ãªãã¯ããã ãã§ãæ¿èªåŸããã¢ãéããŸãã ã€ãŸã ãšã¬ããŒã¿ããã§ãããã¢ã«è¿ã¥ããŠã§ãéãããšãã§ããŸãã ãŸããæèšãããã¢ãéãããããã€ã¯ã䜿ã£ãŠããããã©ã³ã®ããŒãœãã«ã¢ã·ã¹ã¿ã³ãã«è©±ãããããããããšãã§ããŸãã éèŠãªèŠçŽ ã¯èªå¯ã§ãã ããããã£ãšè©³ããèŠãŠã¿ãŸãããã å³1ãåç §ããŠãã ããã
äœæ¥ã®æŠç¥å³
é»è©±æ©ã¯ããŒã³ã³ã®å¯èŠç¯å²ã«å ¥ããBeacon Discoverã䜿çšããŠããŒã³ã³ãæ€åºããNearby messages APIãä»ããŠGoogleããŒã³ã³ã¬ãžã¹ããªããæ·»ä»ãã¡ã€ã«ãåä¿¡ããŸãã 次ã«ãæå·åãããã»ãã·ã§ã³ã§WifiãŸãã¯ã¢ãã€ã«ã€ã³ã¿ãŒããããä»ããŠãé»è©±ã¯ãã®æ·»ä»ãã¡ã€ã«ãšIMEIãŸãã¯ä»ã®äžæã®ã³ãŒãã»ãããæ¿èªãµãŒããŒã«ã€ã³ã¹ããŒã«ãããšãã«éä¿¡ããŸãã èš±å¯ãµãŒããŒã¯ã¢ã¯ã»ã¹æš©ãèå¥ããããã§ããã°ããã¢ãäžæã«ç¹åŸŽä»ããæ·»ä»ãã¡ã€ã«ããã®ããŒã¿ã«åºã¥ããŠã察å¿ããããã¯ãéãããã®ã³ãã³ããé»åããã¯ç®¡çãµãŒããŒã«äžããŸãã é»åããã¯å¶åŸ¡ãµãŒããŒã¯ãã¢ã¯ãã¥ãšãŒã¿ãŒã«ãã¢ãéãããã«æ瀺ããŸãã
![](https://habrastorage.org/files/10b/5ca/0bd/10b5ca0bded14a4e92f1ebfdc0150b61.png)
å³1.çžäºäœçšã®ç·šæã®ã¹ããŒã
ããã§ç§ã«èµ·ãã£ã解決çããããŸãããããŠä»ãããå®è£ ããŠã¿ãŸãããã
ç§ãã¡ã¯éã®ã¢ã€ãã¢ãå ·çŸåããŸã
G250ã²ãŒããŠã§ã€ãåããAvaya PBXãèªç±ã«äœ¿çšã§ããŸããã ããã¯å€ãã²ãŒããŠã§ã€ã§ãããé·ãå»æ¢ãããŸããã ãããããã®æ°ãã代æ¿åã§ããG450 / G430ã²ãŒããŠã§ã€ã«ã¯ãå¿ èŠãªã³ã³ããŒãã³ããã€ãŸãé»åãã¢ããã¯å¶åŸ¡ãã©ã€ããå«ãŸããŠããŸãã å°èŠæš¡ãªãã£ã¹ã®ããŒãºã«å¯Ÿå¿ããããããã®ã²ãŒããŠã§ã€ã«ã¯ãã©ã€ãªã¬ãŒãçµã¿èŸŒãŸããŠããŸããããããæ¥ç¹ééè£å©è£ 眮ã§ãïŒå³2ãåç §ïŒã
![](https://habrastorage.org/files/f32/9c3/0b9/f329c30b95e9452cb67e606754202663.png)
å³2. Avaya Gateway G430
ãã®ã³ãã¯ã¿ã¯ãäºåå®çŸ©ãããé»è©±çªå·ã®ãã€ã€ã«ãå¶åŸ¡ããããã«äœ¿çšã§ããŸãã ãã®çªå·ããã€ã€ã«ãããšãã²ãŒããŠã§ã€ã¯ãªã¬ãŒãéããé»åããã¯ãéãããã®ä¿¡å·ãéããŸãã
ããã«ãAvayaããããã¥ãŒã¹ããIVRïŒInteractive Voice ResponseïŒãåããã¯ãŒã¯ã¹ã¿ã³ããå©çšã§ããŸããã ããã¯å®å šã«ãœãããŠã§ã¢ã®ãµãŒãã¹ã§ãããé³å£°ãªã¯ãšã¹ãã ãã§ãªããã¡ãŒã«ãSMSãåŠçã§ããŸãããã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãhtmlãªã¯ãšã¹ããå¿ èŠã«ãªããŸãã ãŸãããã®IVRã¯ãé»åã¡ãŒã«ãšSMSã ãã§ãªããé³å£°é話ãéå§ã§ããŸãã ã€ãŸã ãã®ãããžã§ã¯ãã«é¢é£ããŠããã®IVRã¯å€æ°ã®è»¢éã䌎ãhtmlãªã¯ãšã¹ããåãåãããããã®å€æ°ã®åŠççµæã«åºã¥ããŠãç¹å®ã®çªå·ãžã®é³å£°é話ã®çºä¿¡ãéå§ã§ããŸãã IVRã§ã®èŠæ±åŠçã¯ãçµã¿èŸŒã¿ããŒã«ãšJavaããã°ã©ãã³ã°èšèªã®äž¡æ¹ã䜿çšããŠå®è¡ã§ããŸãã ãã®ç¹ã§ããã®IVRã¯èš±å¯ãµãŒããŒãšããŠäœ¿çšãããŸããã G250ã²ãŒããŠã§ã€ãåããAvaya Aura Communication Manager PBXãé»åããã¯å¶åŸ¡ãµãŒããŒãšããŠäœ¿çšãããŸããã é»åããã¯ãå©çšã§ããŸããã
ãããã£ãŠãæºåž¯é»è©±ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãããŒã³ã³ã®èå¥åãååŸããGoogleããŒã³ã³ã¬ãžã¹ããªã«é£çµ¡ãããã®æ·»ä»ãã¡ã€ã«ãååŸããå¿ èŠããããŸãããã®åŸãhtmlãªã¯ãšã¹ãã§ãã®æ å ±ãšIMEIãIVRã«éä¿¡ããŸãã G250ã®æ¥ç¹ééãã©ã€ãªã¬ãŒãç絡ãããŠããã¢ãéããŸãã
ããŠãå®è£ ã®æºåã®æåŸã®ã¹ãããã¯ãAndroidãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãå®è¡ããæºåž¯é»è©±ãå ¥æããããšã§ããã ããã¯ãAndroid Lollipop 5.1.1ãæèŒããHTC Desireã§ããã ãã¡ãããã©ãããããã«Android Studioãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããã
ãã¹ãŠæºåãæŽã£ãã®ã§ãç§ã¯æºåãæŽããŸããã ãã€ãã®ããã«ãçŸå®ã¯iã«ç¹åšããŠããŸãã
èœãšãç©Ž
ãŸããããŒã³ã³ãGoogleããŒã³ã³ã¬ãžã¹ããªã«ç»é²ããå¿ èŠããããŸãã ãããè¡ãæãç°¡åãªæ¹æ³ã¯ãGoogle Play MarketãšApple App Storeã®äž¡æ¹ã§å©çšå¯èœãªGoogle Beacon Toolsã¢ãã€ã«ã¢ããªã䜿çšããããšã§ãã
ããŒã³ã³ããªã³ã«ããŠããã€ã¯ãåè·¯ãšããããªãŒã®éã®ãã©ã¹ããã¯ã®æè·¯åšãåãå€ããGoogleããŒã³ã³ããŒã«ãã€ã³ã¹ããŒã«ããŠãããŒã³ã³ã®æ€çŽ¢ãéå§ããŸããã 圌ã¯çŸããŸããã§ããã 次ã«ãã¡ãŒã«ãŒã®ã¢ããªã±ãŒã·ã§ã³iBKS Config ToolãããŠã³ããŒãããŸããã ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãAndroidããã€ã¹ãšiOSããã€ã¹ã®äž¡æ¹ã§ã䜿çšã§ããŸãã ãããŠ-èŠãïŒ ããŒã³ã³ãçŸããŸããã
![](https://habrastorage.org/files/752/f97/403/752f974036de435889e1dd7408ff0faa.png)
å³3. iBKSæ§æããŒã«
ãããã圌ã¯æ°žç¶çã«GoogleããŒã³ã³ããŒã«ã«è¡šç€ºããããããŸããã§ããã ã€ã³ã¿ãŒããããå匷ããåŸãiBKS Config Toolã§ç·šéã¢ãŒãã«å ¥ããããŒã³ã³ã®ãããŒããã£ã¹ãã®ã¿ã€ããå€æŽããå¿ èŠãããããšãèªã¿ãŸããã ã¢ããªã±ãŒã·ã§ã³ã¯AndroidãšiOSã®äž¡æ¹ã§é åºã«ç·šéã¢ãŒãã«å ¥ãããšãæåŠããŸããã ããããªãŒãåãå€ããŠããŒã³ã³ããªãã«ããŠããåã³ãªã³ã«ããåŸã«ã®ã¿ããã®ã¢ãŒãã«å ¥ãããšãã§ããŸããã ãã¹ãŠã«ã€ããŠçŽ30ç§ãããããã®åŸããŒã³ã³ã¯åã³ãããã¯ãããŸããã ãã®æ©èœãŸãã¯ãã°ãç解ã§ããŸããã§ããã ããã¯ã©ãã«ãèšèŒãããŠããŸããã å³4ãåç §ããŠãã ããã
![](https://habrastorage.org/files/6f0/17a/13c/6f017a13c1404ebba6eeb358bd0bff60.jpg)
å³4. iBKSæ§æããŒã«ã®ç·šéã¢ãŒã
åºåã¢ãŒãã1ãã7ã«å€æŽãããšïŒå³5ãåç §ïŒãã€ãã«GoogleããŒã³ã³ããŒã«ã«ããŒã³ã³ã衚瀺ãããŸããïŒå³6ãåç §ïŒã ãããã圌ã¯é åºã«ç»é²ãæåŠããŸããã
![](https://habrastorage.org/files/33f/595/de2/33f595de2828475fa3b2da3d99e4da46.png)
å³5.åºåã¢ãŒãã®éžæ
![](https://habrastorage.org/files/17e/c4f/072/17ec4f0729f44bdd91e3444e4711b998.jpg)
å³6. GoogleããŒã³ã³ããŒã«
ç»é²çšã®GoogleããŒã³ã³ããŒã«ã§ã¯ãããŒã³ã³ãiBeaconãŸãã¯Eddystone UUIDã¢ãŒãã«ããå¿ èŠããããŸãããããã®ã¢ãŒãã§ã¯é åºã«è¡šç€ºãããŸããã§ããã Eddystone URLã¢ãŒãã§ã¯ã圌ã¯ãããèŠãŸããããç»é²ãæåŠããŸããã AndroidãšIOSã§ã®ãã®ã¢ããªã±ãŒã·ã§ã³ã®åäœã¯åãã§ããããAndroidã§ã¯ã¢ããªã±ãŒã·ã§ã³ãæåã«ãããžã§ã¯ããéžæãããã®åŸããŒã³ã³ã®ç»é²ãæåŠããŸããã
ããŒã³ã³ã®ãã®åäœã®çç±ã¯äœã§ãããããããžã§ã¯ãäžã«èŠã€ããããšãã§ããŸããã§ããã ããŒã³ã³èªäœã«åé¡ããã£ãããã§ãã ãã¡ããã亀æãã䟡å€ã¯ãããŸãããããããžã§ã¯ãã®æéã¯éãããŠãããHabrã®ãªãã£ã¹ãžã®æ°ããæ è¡ã®æéã¯ãããŸããã§ããã iBKS Config Toolããã³Google Beacon Toolsã䜿çšããå®éšãããããŒã³ã³ãçºä¿¡ããäžæã®èå¥åãéä¿¡ããŠããããšãæããã«ãªããŸããã ãããã£ãŠããã¢ã¹ã¿ã³ãã®ããŒã³ã³ã¯ãGoogleããŒã³ã³ã¬ãžã¹ããªããåä¿¡ããæ·»ä»ãã¡ã€ã«ã§ã¯ãªãããã®èå¥åã«ãã£ãŠèå¥ããããšã«æ±ºå®ãããŸããã äžè¬ã«ããããã¿ã€ããœãªã¥ãŒã·ã§ã³ã®å Žåããã®ãããªçœ®æã¯éåžžã«é©åã§ãã
ãã®ãããAndroid StudioãããŒã³ã³èå¥åã®æ€åºãæŽçã§ããããã«ããJavaã©ã€ãã©ãªãèŠã€ããã ãã§ãã ãã¡ãããGitHubãšRadiusnetwork.com.eddystonedemoã©ã€ãã©ãªãå©ãã«ãªããŸããã ãã®ã©ã€ãã©ãªã䜿çšãããšãããŒã³ã³ã«ãã£ãŠãããŒããã£ã¹ããããèå¥åã確èªã§ããŸããããã¯ãiBKS Config Toolã§ã衚瀺ã§ããŸãã ããã§èª¬æããŸã ã
倧ããªç°è²ã®ãã¿ã³ãããã¢ã¯ãã£ããã£ãç·šæãããŸããïŒå³7ãåç §ïŒã ãã®ãã¿ã³ã¯ãããŒã³ã³ãèŠã€ããåŸãClickableã®è²ãååãããã³ããããã£ãå€æŽããŸããã ã€ãŸããããŒã³ã³ãèŠã€ãããŸã§ããã¿ã³ãæŒããŠãäœãèµ·ãããŸããã ããŒã³ã³ãèŠã€ãããšããã«ããã¿ã³ãèµ€ã«å€ãããã¯ãªãã¯ã§ããŸãã ãã¿ã³ãæŒããããšãURLãåŒã³åºãããIMEIéä¿¡ã§IVRã¢ããªã±ãŒã·ã§ã³ã«ã€ãªãããŸããIMEIã¯ããããã§ãã¯ããæåãããšãSIPãä»ããŠé»åããã¯å¶åŸ¡ãµãŒããŒã«åŒã³åºãã圢æããŸãã ããŒã³ã³ä¿¡å·ã倱ãããå ŽåïŒãããŸã§ã®è·é¢ãé·ããªããããªãã«ãªãïŒããã¿ã³ã®è²ãå€ãããClickableããããã£ãå ã«æ»ããŸãã
![](https://habrastorage.org/files/648/cfa/760/648cfa7601f647a58d44e680d65a0b87.jpg)
å³7.ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã¯ãªãŒã³ã·ã§ãã
ã³ãŒããšæçµå®è£
ãããžã§ã¯ãå šäœã¯ãGithubã§ããã«ãããŸãã 詳现ã«ã€ããŠèª¬æããŸãã 以äžã¯ãããŒã³ã³ãèŠã€ãã£ããšãã«åŒã³åºãããé¢æ°ã§ãã
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { for (Beacon beacon: beacons) { if (beacon.getServiceUuid() == 0xfeaa && beacon.getBeaconTypeCode() == 0x00) { // This is a Eddystone-UID frame Identifier namespaceId = beacon.getId1(); Identifier instanceId = beacon.getId2(); foundBeacon = namespaceId.toString(); // . . if (foundBeacon.equals("0xba1c51bab3147efee8e5")) { Log.d("Found beacon", foundBeacon); // found = true; runOnUiThread(new Runnable() { public void run() { // , Clickable . mainButton.setText("You can open the door now"); mainButton.setBackgroundColor(0xffef0606); mainButton.setClickable(true); } }); } Log.d("RangingActivity", "I see a beacon transmitting namespace id: " + namespaceId + " and instance id: " + instanceId + " approximately " + beacon.getDistance() + " meters away."); runOnUiThread(new Runnable() { public void run() { ((TextView) RangingActivity.this.findViewById(R.id.foundbeacon)).setText("Found beacon - " + foundBeacon); } }); } } }
以äžã¯ãIVRã§URLãåŒã³åºãé¢æ°ã§ãã
public void buttonClick(View view) { // IMEI String ret = telephonyManager.getDeviceId(); Log.d("IMEI", ret); //URL IP IVR HTML OpenTheDoor IMEI webview.loadUrl("http://192.168.0.204:7080/Redirector/?AVAYAEP__LaunchId=OpenTheDoor&beacon=" + foundBeacon + "&imei=" + ret.toString()); }
ãã®ã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ããŒã¯ãé»è©±ãçŽå€±ããŠãã5ç§åŸã«äœ¿çšã§ããªããªã£ããšãã«ãã¿ã³ãæ¶ãããã«å¿ èŠã§ãã
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); mainButton = (Button) findViewById(R.id.mainbutton); telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); webview = (WebView)findViewById(R.id.webView); // mTimer = new Timer(); mMyTimerTask = new MyTimerTask(); mTimer.schedule(mMyTimerTask, 1000, 5000); } class MyTimerTask extends TimerTask { @Override public void run() { if (found) { found = false; } else { runOnUiThread(new Runnable() { public void run() { // mainButton.setText("Open the door"); mainButton.setBackgroundColor(0xffcfc3c3); mainButton.setClickable(false); ((TextView) RangingActivity.this.findViewById(R.id.foundbeacon)).setText(""); } }); } } } }
IVRã®ã¢ããªã±ãŒã·ã§ã³éçºã¯ãç¹æ®ãªç°å¢Avaya Aura Orchestration Designerã§å®è¡ãããéçºç°å¢Eclipseã«åºã¥ããŠããŸãã åºæ¬çã«ãåèŠçŽ ã®äžã«ã¯Javaã³ãŒãããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ããã©ãã°ïŒããããã®ã¹ã¿ã€ã«ã§éçºãç°¡çŽ åããããã«æ§ç¯ãããŠããŸãã å³8ã¯ãIVRã®ã¢ããªã±ãŒã·ã§ã³éçºç°å¢ã®ã¹ã¯ãªãŒã³ã·ã§ããã瀺ããŠããŸãã
![](https://habrastorage.org/files/1b3/29d/817/1b329d817db74057b1a60c0949753e39.png)
å³8. Avaya Aura Orchestration Designeréçºç°å¢
ãã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãData1ãšOutcallingã®2ã€ã®ã¡ã€ã³ã¢ãžã¥ãŒã«ããããŸãã ãããã®ã¢ãžã¥ãŒã«ã®ã¹ã¯ãªãŒã³ã·ã§ãããå³9ããã³10ã«ç€ºããŸãã
![](https://habrastorage.org/files/cce/59e/a52/cce59ea52a924e928ba764a238ff13f3.png)
å³9. Data1ã¢ãžã¥ãŒã«
![](https://habrastorage.org/files/342/d93/823/342d938232e34f57a745267882e5df89.png)
å³10.åŒã³åºãã¢ãžã¥ãŒã«
ããŒã³ã³èå¥åãšIMEIã®å®éã®èªèšŒã¯Data1ã¢ãžã¥ãŒã«ã§å®è¡ãããŸããäž¡æ¹ãæ£ããå ŽåãOutcallingã¢ãžã¥ãŒã«ã«è»¢éãè¡ãããCalledNumberå€æ°ã«æ ŒçŽãããŠããäºåæ§æçªå·ãžã®çºä¿¡ã³ãŒã«ãçæãããŸãã ãã®å€æ°ã¯ãATCã§æ§æãããçªå·ãèšå®ããŠãé»åãã¢ããã¯ã«æ¥ç¶ããããã©ã€ContactClosureãªã¬ãŒãã¢ã¯ãã£ãã«ããŸãã
å®å šãªãããžã§ã¯ãã¯ãã¡ãã«ãããŸã ã
ãŸããçµè«ãšããŠããããªããã®ã¢ãã¬ã¹ã«æçš¿ãã ããããžã§ã¯ãã®èª¬æãè¡ãããæ¢ã«å®äºãããããžã§ã¯ãã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãè¡ãããŸãã ãæž èŽããããšãããããŸããïŒ