
å
¥é
Freeswitchãç§ã®å°ããªåŒ±ç¹ã§ããããšãããŸããŸèµ·ãããŸããã ã¯ããçŸåšãã¢ã¹ã¿ãªã¹ã¯ã¯äžçã§ããåºãæ®åããŠãããç§ããããããç¥ã£ãŠããŸããã... Freeswitchã¯äœãã§ç§ãé
äºããŸãã æ©èœã®ã»ãããããããéåžžã«å®å®ããåäœããªãœãŒã¹æ¶è²»ã®äœãããããŠããè«ççãªããã€ã¹ãããããŸããã ãŸãã¯ãç§ã¯ITæ¥çã®ãããã¹ã¿ãŒã§ãããä»ã®äººãšã¯éã£ãŠãããããã£ããšæããŸãã ç¥ãæ¹æ³ã ç§ãã¡ã¯äººéã®éã®éãæãäžããå¿çåŠè
ã§ã¯ãªãã®ã§ãç§ãã¡ã¯ãããåœããåã®ããšãšæã£ãŠãããå®çšçãªããšãããŠããŸãã ã«ã¹ã¿ããŒãµãŒãã¹ãæ¹åããŸãã è°é¡ã«åœŒã®èªèãéããŠæ¹åãããã¯ã©ã€ã¢ã³ãã®å人åã§ãã
éåŠ
é»è©±åž³ã¯å®å
šã«å®çšçã§ãã IPãã¬ãã©ããŒã·ã¹ãã äžã®å€ããå°ãªãããã¹ãŠã®ã¢ããªã³ã«ååšããŸãã çä¿¡ã³ãŒã«ãé»è©±çªå·ã§ã¯ã©ã€ã¢ã³ããèå¥ããããšãèš±å¯ããŸãã ãã¡ãããç§ãã¡ã¯å¶æ¥éšéã§ã¯ãããŸãããCRMã§å
šå¡ãæžãããã§ã¯ãããŸããããåé¡ãæ±ããŠãã¯ãã«ã«ãµããŒãã«é»è©±ããããé¡§å®¢åŸæ¥å¡ã§ãã£ãŠããããã«èªããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ã¯ãé»è©±åž³ã¯éåžžãã©ã°ã€ã³ãšããŠæ¥ç¶ãããç¹å®ã®ã€ã³ãã©ã¡ãŒã·ã§ã³ã¹ãã¢ïŒã»ãšãã©ã®å Žåã¯ããŒã¿ããŒã¹ïŒãããŒã¿ãœãŒã¹ãšããŠäœ¿çšã§ããŸãã ç§ã¯åæ§ã®éåœãšFreeswitchãéããŸããã§ããã ç°ãªãæéã«ãé»è©±åž³ã«2ã€ã®ãªãã·ã§ã³ã䜿çšããŸããã
- ãã©ã°ã€ã³ãšSQLiteããŒã¿ããŒã¹ã«åºã¥ããŠããŸãã
- Luaã®èªå·±èšè¿°RESTã³ãã¯ã¿ã«åºã¥ããŠããŸãïŒä»æ¥äœ¿çšïŒã
äž¡æ¹ã®ãªãã·ã§ã³ã®å®è£
ã«ã€ããŠèª¬æããŸãã ããããã«é·æãšçæããããŸãã
ããŒã¿ããŒã¹ã®é»è©±åž³ã¯ãããã€ã¹å
ã§ããã·ã³ãã«ã§æšæºçã§ãã Freeswitchã®å
¬åŒWebãµã€ãã«ã¯ãã€ã³ã¹ããŒã«ãšæ§æã«é©ããããã¯ããããŸãã ãããããã¬ãã©ããŒãµãŒããŒã«ã¯Webã€ã³ã¿ãŒãã§ã€ã¹ããªãããïŒç§ã¯é»è©±äº€æã®Webã€ã³ã¿ãŒãã§ã€ã¹ã®äž»ãªçžæã§ãããããã¯æ¬¡åã¯ãŸã£ããç°ãªã話ã§ãïŒãç¡å¶éã®äººã®éããããµãŒã¯ã«ãé»è©±åž³ãèšå®ã§ã
ãŸããããŒã¿ ã
ãªã¯ãšã¹ããªã© ç§ã®å Žåã®ããã«ã
ã³ã³ãœãŒã«ãã§ãã ãªãMySQLã§ã¯ãªãã®ã§ããïŒ å¿
èŠãªãã£ãããã§ãã é»è©±åž³ã«ãã·ã¢ã®ãã¹ãŠãå«ãŸããŠããããã§ã¯ãããŸããããé£çµ¡å
ã¯çŽ500ä»¶ã§ãã ãã®ãããSQLiteã¯èŠããªãããšã倿ããŸããã 2çªç®ã®åé¡ã¯ãæ
å ±ã远å ããããã»ã¹ã§ããã è€æ°ã®ããŒãã«ã«è¿œå ããé¢ä¿ãèæ
®ããŠãéè€ãå¿ããªãã§ãã ããã é»è©±åž³ã®æ
å ±ã远å ããã³æŽæ°ããèŠæ±ã®å®è¡é åºã«é¢ããããã¥ã¡ã³ãããŸã ã©ããã«ãããŸãã å©ç¹ã¯æããã§ã-ããŒã¿ããŒã¹ãšã³ãžã³ã¯ã远å ã®ãœãããŠã§ã¢ã®ã€ã³ã¹ããŒã«ãšçµ±åãå¿
èŠãšãããããèªäœã¯ã¢ãŒãã³ã°ãšåããããç°¡åã§ãã é»è©±åž³å
šäœã1ã€ã®ãã¡ã€ã«ã«ãŸãšããããŠãããç°¡åã«ããã¯ã¢ããããŠä¿åã§ããŸãã å
éšã®ããŒãã«ã¯éåžžã«ã·ã³ãã«ã§ãæ§é ãçè§£ããã®ã«ç¹å¥ãªæèããã»ã¹ã¯å¿
èŠãããŸããã
ã¹ãã£ãã¯ããã倧ããæã¡äžããŠãå·ŠåŽã®é£äººãæã€ã ãã§ååã§ãã 圌ã«ããèããããŠãã ãããé»è©±åž³ã®2çªç®ã®ããŒãžã§ã³ã¯å®è£
ããã®ãç°¡åã§ã¯ãããŸããã§ããã çŸåšãCMDB iTopããã¹ã¿ãŒããããšç©æ¥µçã«åãçµãã§ããã®ã§ãé»è©±åž³ã暪æãããšããã¢ã€ãã¢ãæµ®äžããŸããã 幞ããªããšã«ãCMDBã«ã¯æšæºã®é£çµ¡å
ã¹ãã¬ãŒãžã¢ãžã¥ãŒã«ãååšããäžè²«ããŠããŸãã æšæºçãªæ¹æ³ã䜿çšããŠãããè¡ãããšã¯ã§ããŸããã§ããã ã«ã¢ã¯æå©ã«æ¥ãŠã圌女ã®ãã¹ãŠããããã§ãããã«ãªã£ãã ãã®ã¢ãããŒãã®å©ç¹ã«ã¯ãé£çµ¡å
ã远å ããã³ç·šéããããã®äŸ¿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ã®ååšãCMDBã«ããŒã¿ãä¿åããé»è©±äº€ææ©ã«è»¢éããã³ãŒã«ã®ã«ãŒãã£ã³ã°æã«äœ¿çšããæ©èœãå«ãŸããŸãïŒãŸã 䜿çšãããŠããŸãããèšç»ãããŠããŸãïŒã æ¬ ç¹-ãã¡ããããããã¯ãŒã¯äžã®äŒéé
å»¶ãå€éšãµãŒãã¹ãžã®äŸåããã®çµæžå
šäœã®ããã°ã©ãã³ã°ãšè©Šé転ã®å¿
èŠæ§ã ããããçµæã«ã¯äŸ¡å€ããããŸãã ãšããã§ããã®ãããªãªãã·ã§ã³ãé©çšãããã説åŸããã®ã§ã¯ãªãããã®äŸã ãã§ãå€éšãµãŒãã¹ãšã®ããåããæŽçããæ¹æ³ã瀺ããããšæããŸãã
ã±ãŒã
å€ãITã®äŒçµ±ã«ãããšãåçŽãªãã®ããè€éãªãã®ã«ç§»è¡ããŸãã ãœãã¡ã«æšªããã£ãŠå
å»¶ã°ãããå§ããŸãããã ã©ãã ãã·ã³ãã«ããã芧ãã ããã ããããä»äºã¯ãªãªã«ãã§ã¯ãããŸãããããªãã¯ããã蹎ãããšã¯ãããŸããããããã£ãŠãç§ãã¡ã¯äœãåçŽäœçœ®ã«ç§»åããé»è©±äº€æã³ã³ãœãŒã«ã«è¿ã¥ããŸã...
Freeswitchã®é»è©±åž³ã¢ãžã¥ãŒã«ã¯
ãå€ããµã€ãã§ã¯ mod_cidlookup
DescriptionãšåŒã°
ããæ°ãããµã€ãã§ã¯ DescriptionãšåŒã°ã
ãŸã ã æåã«ãã¢ãžã¥ãŒã«ãäžç·ã«ãããã©ããã倿ããå¿
èŠããããŸãã 誰ãç¥ã£ãŠãããçªç¶ããã€ã®éã«ãæŒããã
modulesãã©ã«ããŒã§ã¢ãžã¥ãŒã«ã®ååšãæ¢ããŸãã
ls -la /usr/local/freeswitch/mod/ | grep mod_cidlookup
ãã¡ã€ã«ããªãã£ãå Žåãæªããã¥ãŒã¹ããããŸãã ã¢ãžã¥ãŒã«ãçµã¿ç«ãŠãããåã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ç§ã¯èªåã§Freeswitchããã«ããããã®ã§ããã«ãã®ãœãŒã¹ããªãŒã¯åžžã«æå
ã«ãããŸãã Freeswitchçšã®ã¢ãžã¥ãŒã«ãæ§ç¯ããæ¹æ³ã®èª¬æã¯ãã®èšäºã®ç¯å²ãè¶
ããŠããããããã®ãŸãŸã«ããŠãããã¢ãžã¥ãŒã«ãå¿
èŠãªãã©ã«ããŒã«æ¢ã«ãããšä»®å®ããŸãã æ¬¡ã«ãæ§æããŠããŒã¿ãæºåããå¿
èŠããããŸãã ã¡ã€ã³ã¢ãžã¥ãŒã«ã®æ§æèšå®ã¯ãã¡ã€ã«ã«ãããŸã
/usr/local/freeswitch/conf/autoload_configs/cidlookup.conf.xml
æå°äœæ¥æ§æã¯æ¬¡ã®ããã«ãªããŸãã
äœæ¥èšå® <configuration name="cidlookup.conf" description="cidlookup Configuration"> <settings> <param name="cache" value="true"/> <param name="cache-expire" value="86400"/> <param name="odbc-dsn" value="sqlite:///usr/local/freeswitch/db/phonebook.db"/> <param name="sql" value=" SELECT (name || (CASE WHEN comment != '' THEN ' (' || comment || ')' ELSE '' END)) AS name FROM numbers n JOIN phonebook p ON n.pid = p.id WHERE n.number='${caller_id_number}' LIMIT 1 "/> </settings> </configuration>
SELECTã®æ¡ä»¶åŒã«æ³šæããŠãã ããã ããŒã¿ããŒã¹ããã³ã³ã¡ã³ããã£ãŒã«ãããã¯ã©ã€ã¢ã³ãã®äŒç€Ÿãæœåºã§ããŸãã ãã£ãŒã«ãã空ã®å ŽåãæåŸ
ã©ããã«å§ãšåã®ã¿ãè¿ãããŸãã åžžã«1è¡ã®ã¿ãè¿ããããããéè€ã¯ç¡èŠãããæãæ©ãé»è©±åž³ãšã³ããªãè¿ãããŸãã ãããã£ãŠãããŒã¿ã远å ããåã«ãããããããŒã¿ããŒã¹ã«ãªãããšã確èªããŠãã ããã é»è©±åž³ãã€ã³ãã£ã³ã°ã¯ã1人ã®ãŠãŒã¶ãŒã«å¯ŸããŠè€æ°ã®é»è©±çªå·ããµããŒãããããã«äœ¿çšãããŸãã
é»è©±åž³çšã®ããŒã¿ããŒã¹ãäœæããŠããŸãã
sudo -u freeswitch sqlite3 /usr/local/freeswitch/db/phonebook.db
-- . -- . CREATE TABLE phonebook ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, name VARCHAR (128) NOT NULL, comment VARCHAR (256) ); CREATE INDEX name ON phonebook (name); -- . CREATE TABLE numbers ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, pid INTEGER REFERENCES phonebook (id) ON DELETE CASCADE NOT NULL, NUMBER VARCHAR (32) NOT NULL ); CREATE INDEX NUMBER ON numbers (NUMBER); -- . INSERT INTO `phonebook` (`name`, `comment`) VALUES (' ', ' , '); INSERT INTO `numbers` (`pid`, `number`) VALUES (LAST_INSERT_ROWID(), '79152323245'); INSERT INTO `phonebook` (`name`) VALUES (' '); INSERT INTO `numbers` (`pid`, `number`) VALUES (LAST_INSERT_ROWID(), '74953462323');
SQLiteã³ã³ãœãŒã«ãçµäºããŸãã
.exit
次ã«ãã¢ãžã¥ãŒã«ãããŠã³ããŒãããŠãæ°ããäœæããé»è©±åž³ã«èšå®ããå¿
èŠããããŸãã Freeswitchã³ã³ãœãŒã«ã«å
¥ããŸãã
fs_cli
ããŒãæžã¿ã®é»è©±åž³ã¢ãžã¥ãŒã«ãæ¢ããŠããŸãã
freeswitch@internal> show modules mod_cidlookup 0 total.
ãããã¢ãžã¥ãŒã«ã¯ãããŸããã ããŠã³ããŒãããŠã¿ãŠãã ããã
freeswitch@internal> load mod_cidlookup +OK Reloading XML +OK 2016-10-29 14:36:33.890548 [DEBUG] mod_cidlookup.c:122 Connecting to dsn: sqlite:///usr/local/freeswitch/db/phonebook.db 2016-10-29 14:36:33.890548 [INFO] mod_enum.c:880 ENUM Reloaded 2016-10-29 14:36:33.890548 [INFO] switch_time.c:1415 Timezone reloaded 1781 definitions 2016-10-29 14:36:33.890548 [CONSOLE] switch_loadable_module.c:1538 Successfully Loaded [mod_cidlookup] 2016-10-29 14:36:33.890548 [NOTICE] switch_loadable_module.c:292 Adding Application 'cidlookup' 2016-10-29 14:36:33.890548 [NOTICE] switch_loadable_module.c:338 Adding API Function 'cidlookup' .
ã¢ãžã¥ãŒã«ãããŒããããŸããã ããŒã¿ããŒã¹ãžã®æ¥ç¶ã«åé¡ãããå Žåã¯ããã°ã«è¡šç€ºãããŸãã ããŒããããã¢ãžã¥ãŒã«ã®äžããåã³æ¢ããŠããŸãã
freeswitch@internal> show modules mod_cidlookup type,name,ikey,filename api,cidlookup,mod_cidlookup,/usr/local/freeswitch/mod/mod_cidlookup.so application,cidlookup,mod_cidlookup,/usr/local/freeswitch/mod/mod_cidlookup.so 2 total.
次ã«ãã¢ãžã¥ãŒã«ã®æ£åžžæ§ããã¹ãããå¿
èŠããããŸãã ããã¯ãcidlookup API颿°ã䜿çšããŠã³ã³ãœãŒã«ããå®è¡ããããšãã§ããŸãã ãã®æ§æãèŠãŸãã
freeswitch@internal> show api cidlookup name,description,syntax,ikey cidlookup,cidlookup API,cidlookup status|number [skipurl] [skipcitystate] [verbose],mod_cidlookup 1 total.
é»è©±åž³ã«è¿œå ããããŒã¿ãæãåºããŠãAPIã®åäœããã¹ãããŸãã
freeswitch@internal> cidlookup 79152323245 ( , ) freeswitch@internal> cidlookup 74953462323
ã芧ã®ãšããããã®é¢æ°ã¯é»è©±åž³ããæ£ããé£çµ¡å
ããŒã¿ãè¿ããŸãã ããã«ãã³ã¡ã³ããããå Žåã¯ãæ¬åŒ§ã§å²ãŸããŠè¿ãããŸãã æ¬¡ã«ããã®æ©èœããã€ã€ã«ãã©ã³ã«è¿œå ããŠã人ã
ã«å
ãšåã³ãããããå¿
èŠããããŸãã ãã€ã€ã«ãã©ã³ã¯ãã¹ãŠã®äººã§ç°ãªãããã«é
眮ãããŠãããããé»è©±åž³ã«é¢ããéšåã®ã¿ã瀺ããããããã®äœçœ®ã瀺ããŸãã /usr/local/freeswitch/conf/dialplan/public.xmlãã¡ã€ã«ã«ãããŸãã
<extension name="cid_number_cleanup" continue="true"> <condition field="caller_id_number" expression="^(\d+)$"> <action application="set" data="effective_caller_id_number=$1" inline="true"/> </condition> </extension> <extension name="cid_name_cleanup" continue="true"> <condition field="caller_id_name" expression="^(\d+)$"> <action application="set" data="effective_caller_id_name=$1" inline="true"/> </condition> </extension> <extension name="cid_lookup" continue="true"> <condition field="${module_exists(mod_cidlookup)}" expression="true"/> <condition field="caller_id_name" expression="^(\d+)$|^$"/> <condition field="caller_id_number" expression="^(\d+)$"> <action application="cidlookup" data="$1"/> </condition> </extension>
ãã¡ã€ã«ãä¿åããã³ãã³ãã§ãã€ã€ã«ãã©ã³ãåèµ·åããŸã
fs_cli -x reloadxml
ãšã©ãŒããªããã°ãã¢ãžã¥ãŒã«ã®åäœã確èªã§ããŸãã ååã«ãã¬ã€ããããèªåããŒãããã¢ãžã¥ãŒã«ã远å ããŸãã ããã¯ããã¡ã€ã«/usr/local/freeswitch/conf/autoload_configs/modules.conf.xmlã§è¡ãããŸãã ããã«è¡ãæ¢ããŠããŸã
<load module="mod_cidlookup"/>
ã³ã¡ã³ããå€ããŸãã æ¬ èœããŠããå Žåã¯ããã¡ã€ã«ã®æåŸã«è¿œå ããŸãã
ããã§ãé»è©±åž³ãèšå®ãããŸããã ããããäœããçµ¶ããæ¹åããããªãå Žåã管çè
ã¯ç®¡çè
ã§ã¯ãããŸããã ãããŠããã®éã«æ²¿ã£ãæ
ã¯ãç§ãã¡ã®ç©èªã®æ¬¡ã®éšåã«ã€ãªãããŸãã
ããã¯ããŸããã
FreeswitchãšiTopã®çžäºäœçšã¯ã
å
¬åŒWebãµã€ãã§èª¬æãããŠããRESTã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠãå®å
šã«æšæºçãªæ¹æ³ã§é
眮ãããŸãã é£ããã¯äœã§ããïŒ åœŒãšã¯çŽæ¥é£æºããªãããããã©ã°ã€ã³
swanã®åãåããå¿
èŠããããŸãã åœå
mod_curlã䜿çšããäºå®ã§ãããã
ã©ããããããééã£ãŠããŸãã ã Luaã§å°ããªã¹ã¯ãªãããèšè¿°ãã
mod_luaãä»ããŠåŒã³åºãããšã«ã
ãŸãã ã ãŸãæåã«ãé»è©±åž³èªäœãæºåããå¿
èŠããããŸããã€ãŸããäœããã®æ¹æ³ã§é£çµ¡å
ãiTopã«ã¢ããããŒãããŸãã éžæ-åæã®ãœãŒã¹ãCSVã®ããŠã³ããŒãããŸãã¯é»è©±åž³ãžã®æåå
¥åã ããã«ã¯ãµã³ãããã¯ã¹ããããå€ãã®é£çµ¡å
ã¯å¿
èŠãªãã®ã§ã1ã€ã®çµç¹ãäœæããããã«è€æ°ã®é£çµ¡å
ã远å ããŸãããã CMDBã倿Žããã«ã¯ãé©åãªæš©éãæã£ãŠãããã管çè
ã§ããå¿
èŠããããŸãã
- iTopãéãããµã€ãã¡ãã¥ãŒã§ãã¢ãã¬ã¹[ ããŒã¿ç®¡ç ] â [ çµç¹ ]ã«ç§»åããå³ãã¿ã³[ æ°èŠ... ]ãã¯ãªãã¯ããŸãã

- å¿
é ãã£ãŒã«ãã«å
¥åããã äœæ ããã¿ã³ãã¯ãªãã¯ããŸãã

- ãã¹ãŠãæ£ããè¡ããããšãäœæãããçµç¹ã®ããŒãžã«è»¢éãããŸãã

- ããã§ãã¡ãã¥ãŒã§ã¢ãã¬ã¹æ§æç®¡çâé£çµ¡å
âé£çµ¡å
ã®äœæã«ç§»åããŸã ã éãããŠã£ã³ããŠã§ãé£çµ¡å
ã®ã¿ã€ãã Person ããéžæããã é©çš ããã¯ãªãã¯ããŸãã

- é£çµ¡å
ã远å ããããã®ãŠã£ã³ããŠãéããŸãã å¿
èŠãªãã¹ãŠã®ãã£ãŒã«ãã«å
¥åããã äœæ ããã¿ã³ãã¯ãªãã¯ããŸãã æšæºã®iTopã€ã³ã¹ããŒã«ã§ã¯ã远å ã®é»è©±ãå«ãŸãããã£ãŒã«ãã®äžéšã¯ãªãããšã«æ³šæããŠãã ããããããã®é»è©±ã¯ãããã€ãã®é»è©±ã®åé¡ã解決ããããã«ã¢ãã«ãç·šéããããšã«ãã£ãŠè¿œå ãããŸããã ã¢ãã«ã®ç·šéã¯èšäºã®ç¯å²ãè¶
ããŠããŸã;詳现ã¯ãã¡ããã芧ãã ããã
ã

- é£çµ¡å
ããŒãžã«ãªãã€ã¬ã¯ããããå Žåããã¹ãŠãæ£ããè¡ãããŠããŸãã

åæ§ã«ãããã«ããã€ãã®é£çµ¡å
ã远å ããŸãã ããã§ãã©ãã«ç®ãåããã°ããããããããé»è©±äº€æã®èšå®ã«é²ãããšãã§ããŸãã å
ã»ã©èšã£ãããã«ãiTop RESTã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŠãªã¯ãšã¹ãããŸãã 圌ã®ãªã¹ããšææ
®æ·±ããã€ã¹ãã£ã³ã°ã®çµæã次ã®ãªã¯ãšã¹ããåºãããŸããã
{ "operation": "core/get", "class": "Person", "key": "SELECT Person AS P WHERE P.phone = '79101001122' OR P.add_phone = '79101001122' OR P.add_phone_2 = '79101001122' OR P.mobile_phone = '79101001122' OR P.add_mobile_phone = '79101001122'", "output_fields": "friendlyname,org_id_friendlyname,function" }
Curlã䜿çšããŠå®è¡ããŠã¿ãŸãããã
curl -XPOST 'https://<itop_address>/webservices/rest.php?version=1.0' -d 'auth_user=admin&auth_pwd=password&json_data=%7B%22operation%22%3A%22core%2Fget%22%2C%22class%22%3A%22Person%22%2C%22key%22%3A%22SELECT%20Person%20AS%20P%20WHERE%20P.phone%20%3D%20%2779101001122%27%20OR%20P.add_phone%20%3D%20%2779101001122%27%20OR%20P.add_phone_2%20%3D%20%2779101001122%27%20OR%20P.mobile_phone%20%3D%20%2779101001122%27%20OR%20P.add_mobile_phone%20%3D%20%2779101001122%27%22%2C%22output_fields%22%3A%22friendlyname%2Corg_id_friendlyname%2Cfunction%22%7D'
ã芧ã®ãšããããªã¯ãšã¹ãã«ã¯èªèšŒãå¿
èŠã§ãã iTopã®ãŠãŒã¶ãŒãååšããèŠæ±ãå®è¡ããããã«å¿
èŠãªæš©éãæã£ãŠããå¿
èŠããããŸãã
å¿çãšããŠããŠãŒã¶ãŒãèŠã€ããŸãïŒ
{ "objects": { "Person::486": { "code": 0, "message": "", "class": "Person", "key": "486", "fields": { "friendlyname": "\u0412\u0430\u0441\u0438\u043b\u0438\u0439 \u041f\u0443\u043f\u043a\u0435\u0432\u0438\u0447", "org_id_friendlyname": "\u0420\u043e\u0433\u0430 \u0438 \u043a\u043e\u043f\u044b\u0442\u0430", "function": "\u0421\u0443\u043f\u0435\u0440\u0445\u043e\u043c\u044f\u043a" } } }, "code": 0, "message": "Found: 1" }
ããèªã¿ãããããŒãžã§ã³ã§
{ "objects": { "Person::486": { "code": 0, "message": "", "class": "Person", "key": "486", "fields": { "friendlyname": " ", "org_id_friendlyname": " ", "function": "" } } }, "code": 0, "message": "Found: 1" }
ãã®ãããããŒã¿ãéåä¿¡ããããŠãŒã¶ãŒãæ€çŽ¢ãããŸãã ãæ°ã«å
¥ãã®IDEãèŠã€ããŠãã€ã³ã¹ãã¬ãŒã·ã§ã³ãäžããäœããæžãæãæ¥ãŸããã Freeswitchã¹ã¯ãªããçšã«å¥ã®ãã©ã«ããŒãäœæããŸãã
mkdir /usr/local/freeswitch/scripts
ãã®ãã©ã«ããŒã«ãå
±æã©ã€ãã©ãªãŒãæ ŒçŽãããµããã©ã«ããŒlibãäœæããŸãã
mkdir /usr/local/freeswitch/scripts/lib
ãœã±ãããšSSLãæäœããããã®æšæºã©ã€ãã©ãªãå¿
èŠã«ãªããŸãã
sudo apt-get install lua-socket lua-sec
JSONã®ãšã³ã³ãŒããšãã³ãŒãã«ã圹ç«ã€ã©ã€ãã©ãªã ç§ã¯
http://regex.info/blog/lua/jsonã©ã€ãã©ãªãéžæããŸããã ãããããŠã³ããŒãããŠãé©åãªãã©ã«ããŒã«é
眮ããŸãã
wget http://regex.info/code/JSON.lua -O lib/json.lua
ãããŠä»ãç§ãã¡ã®ã³ãŒãããã®äžçã«å
¥ãããã®ãã¹ãŠã®æºåãæŽããŸããã scriptsãã©ã«ããŒã«cidlookup.luaãã¡ã€ã«ãäœæããããŒãããŒããŒãã§æ¬¡ã®ã³ãŒãã远å ããŸãã
/usr/local/freeswitch/scripts/cidlookup.lua æŠãã§ç§ãã¡ã®åµé ããã¹ãããæãæ¥ãŸããã ã³ãã³ãã©ã€ã³ããæäœçšã®ã¹ã¯ãªãããç·šéããæäœæ§ã確èªããŸãã
lua cidlookup.lua 79101001122 ( , )
çŽ æŽãããããã¹ãŠãæ£åžžã«æ©èœããŸãã ã¹ã¯ãªãããç·šéããã³ãã³ãã©ã€ã³ããã®äœæ¥ãç¡å¹ã«ããŸãã æ¬¡ã«ãã¹ã¯ãªãããFreeswitchã«æ¥ç¶ããŸãã æåã«ãé©åãªã¢ãžã¥ãŒã«ãããããšã確èªããå¿
èŠããããŸãã Freeswitchã³ã³ãœãŒã«ã«å
¥ããŸãã
fs_cli
Luaã¢ãžã¥ãŒã«ã®è² è·ã確èªããŸãã
freeswitch@internal> show modules mod_lua type,name,ikey,filename api,lua,mod_lua,/usr/local/freeswitch/mod/mod_lua.so api,luarun,mod_lua,/usr/local/freeswitch/mod/mod_lua.so application,lua,mod_lua,/usr/local/freeswitch/mod/mod_lua.so dialplan,LUA,mod_lua,/usr/local/freeswitch/mod/mod_lua.so 4 total.
ãããã®è¡ã衚瀺ãããŠããå Žåããã¹ãŠãæ£åžžã§ãããã¢ãžã¥ãŒã«ãããŒããããŠããŸãã ããã«ãªãå Žåãã¢ãžã¥ãŒã«ã¯çµã¿ç«ãŠãããŸãããèµ·åãããŸããã å®è¡ããããšããŠããŸãã
freeswitch@internal> load mod_lua
Freeswitchãå®è¡ããã¢ãžã¥ãŒã«ãèŠã€ããããšãã§ããªãå Žåããããçµã¿ç«ãŠãŠåã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ãã®åé¡ãæ£åžžã«è§£æ±ºãããã¢ãžã¥ãŒã«ãããŒãããããšæ³å®ããŠããŸãã ã¹ã¯ãªãããå®è¡ããããšããŸãã
freeswitch@internal> lua cidlookup.lua 79101001122 ( , )
ã芧ã®ãšãããã¹ã¯ãªããã¯æ£åžžã«åäœããåä¿¡ããå¿
èŠããããã¹ãŠã®ãã®ãåäœããŸãã ããããã€ã€ã«ãã©ã³ã«è¿œå ããããšã¯æ®ã£ãŠããŸãã èšäºã®æåã®éšåã®ããã«ãã©ãã«çœ®ããã¯æããŸãããããã®ä»äºã«è²¬ä»»ãè² ããã€ã€ã«ãã©ã³ã®äžéšãæäŸããŸãã
<extension name="cid_number_cleanup" continue="true"> <condition field="caller_id_number" expression="^(\d+)$"> <action application="set" data="effective_caller_id_number=$1" inline="true"/> </condition> </extension> <extension name="cid_name_cleanup" continue="true"> <condition field="caller_id_name" expression="^(\d+)$"> <action application="set" data="effective_caller_id_name=$1" inline="true"/> </condition> </extension> <extension name="cid_lookup" continue="true"> <condition field="${module_exists(mod_lua)}" expression="true"/> <condition field="caller_id_name" expression="^(\d+)$|^$"/> <condition field="caller_id_number" expression="^(\d+)$"> <action application="set" data="effective_caller_id_name=${lua(cidlookup.lua ${caller_id_name})}"/> </condition> </extension>
次ã®ã³ãã³ãã§ãã€ã€ã«ãã©ã³ããªããŒãããŸã
fs_cli -x reloadxml
ãããŠçµæã楜ããã§ãã ããã
é¢ä»ã
ã¯ããæ¹åããã³æ¹åã§ããããšãããã£ãŠããŸãã mod_curlã«é¢é£ä»ããŠã³ãŒããç°¡çŽ åããããšãã§ããã¹ã¯ãªãããçµäºããŠæé©åããããšãã§ããŸãããããã«ã€ããŠã¯è°è«ããŸããã å®ç§ã«å¶éã¯ãããŸããã ããããã©ããªéãæåã®ã¹ãããããå§ãŸããŸãããã®èšäºã圌ã®å€åãªä»äºã«åœ¹ç«ã€ãªããããã¯ç¡é§ã«æžãããŠããªãããšãæå³ããŸãã =ïŒããã§ã¯ãããã«ã¡ã¯ã
PS誰ãã圹ã«ç«ã€ãšãããªã ããªãã®ã³ã¡ã³ããæè¿ããŸãã