ã€ã³ã¿ãŒãã§ã€ã¹ã®èªç¶ãªãã¿ãŒã³ã®éçºããITæ¥çå
šäœã®çºå±ã«çŽ æŽãããæšé²åãäžããããšãåŠå®ããããšã¯çµ¶å¯Ÿã«äžå¯èœã§ãã ãããŠãé³å£°ã€ã³ã¿ãŒãã§ãŒã¹ã ãã§ãªãããžã§ã¹ãã£ãŒã®æ®åãã¢ãã€ã«ãã©ãããã©ãŒã ã®ãã©ãã€ã ã®å€§ããªå€åããããŠãã¡ãããUIãšUXã®åéã§ã®éèŠãªä»äºã«ã€ããŠãéèŠã§ãã æ¥çã¯ãå¢ãç¶ãã人ã
ã«å¯ŸããŠãŸããŸãå奜çã«ãªãããåªããŠããŸãããéåžžã®ããããŠããçšåºŠãŸã§ã®æ¥åžžçãªéçºã¯ãåºå€§ããåãå
¥ããç¡éã®è©Šã¿ã«å€ãããŸãã 以åã¯ãäž»ã«èšèªãšãã¬ãŒã ã¯ãŒã¯ã®æœè±¡åã®ã¬ãã«ã«é¢å¿ããããŸããããä»ã§ã¯ã¯ããã«ã°ããŒãã«ãªåé¡ã«çŽé¢ããŠããŸãã è€éãªã€ã³ã¿ãŒãã§ãŒã¹ãšæ©èœçãªã€ã³ã¿ãŒãã§ãŒã¹ã®ãã©ã³ã¹ãèŠã€ããæ¹æ³ ãã€ã¯ããµãŒãã¹ã䜿çšããŠæ°ãããããžã§ã¯ããéå§ããå¿
èŠããããŸããïŒ ãããã®è³ªåã«çããããšã¯ã§ããŸããããæ°ããæè¡ãšéçºã¢ãããŒãã®éçºãšé©çšããã§ã«éåžžã«å®¹æã«ããã³ã¹ããåæžããŠããããŒã«ã«ã€ããŠã¯èª¬æã§ããŸãã
ã¯ããã«
ãã£ãããããã®æŽå²ã¯é·ããããŸãæåããŠããŸããããã¿ããã€ã³ã¿ãŒãã§ã€ã¹ããã¥ãŒã©ã«ãããã¯ãŒã¯ã®ããã«ããããã«ã€ããŠèšãããšãã§ããŸã-ãã¹ãŠã«æéããããŸãã æŽå²ã®æåŸã®ã©ãŠã³ãã§ã¯ããããã¯ã¢ãžã¢ã®ã¡ãã»ã³ãžã£ãŒãšãœãŒã·ã£ã«ãããã¯ãŒã¯ã«äººæ°ããããŸãã ã¢ãžã¢ã§å§ããŠã圌ãã¯è¥¿æŽã®ç€ŸäŒãµãŒãã¹ãåŸæãã«è¡ããŸããã æ¬¡ã«ãAPIãæ¥ãã§äœæããŠãã人ã
ã¯ãããŸããŸãªæ©äŒãšãã©ãããã©ãŒã ã§ã®æœåšçãªåçé¡ã§ç«¶äºãå§ããŸããã ããã¯ãããããéçºãããšããåãã¿ã¹ã¯ã«çŽé¢ããããã³ã³ãã³ãããã³ãµãŒãã¹ãããã€ããŒããã®éåžžã®éçºè
ã®çæŽ»ãæªå€¢ã«å€ããŸããã

äœããã®æ¹æ³ã§ã¯ã©ã€ã¢ã³ãã«å°éããå¯èœæ§ã®ããã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒã®æ°ãã«ãŠã³ãã§ããŸãããŸããåŸæ¥ã®SMSãé»åã¡ãŒã«ãããã³Webãã£ããããããŸãã 誰ããç¬èªã®APIãŸãã¯SDKãæäŸãããããããããã¹ãŠã«ã¯ç¹å¥ãªã¢ãããŒããå¿
èŠã§ãã ãããŠãåããã®ã®å€æ°ã®ç°ãªãå®è£
ãéçºããã³ãµããŒãããªãããã«ãå€ããå°ãªããäžè²«æ§ã®ããã³ãŒãã§ãã¹ãŠã管çããã®ã¯çŽ æŽãããããšã§ãã ããžãã¹ã§ã¯ãå°èŠæš¡ãªè²©å£²ãã£ãã«ã®è³ªã®é«ãã«ãã¬ããžã§ã¯ãªããããå€ãã®ãã£ãã«ã®å®éçãªã«ãã¬ããžãå¿
èŠã§ãã äžéšã®ãã£ãã«ãä»ã®ãã£ãã«ãããå€ãã®ãéãããããå Žåã§ãã ãŸãã¯ãäžéšã®ãã£ãã«ãä»ã®ãã£ãã«ãããå€ãã®æ©èœãæäŸããå Žåã
ããã§ã¯ãåããã®ã®ç°ãªãå®è£
éã§äœæ¥ãç¡éã«ã©ãã·ã¥ããããšãªããã§ããã ãå€ãã®ãã£ãã«ãã©ã®ããã«ã«ããŒããŸããïŒ å©çšå¯èœãªãœãªã¥ãŒã·ã§ã³ã®1ã€ã¯ããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã§ãã ãã¡ãããããã¯ãã¹ãŠã®åé¡ã解決ããããã§ã¯ãããŸããããå°ãªããšã粟ç¥çãªãã©ã³ã¹ãç¶æããçæ³çã«ã¯é¡§å®¢ãŸãã¯éçšè
ã®ãéãç¶æããŸãã
Microsoft Bot Framework
Microsoft Bot Frameworkã¯ã1幎åã«
Microsoft Build 2016ã§åããŠå°å
¥ãããŸããã ãã ãããŸã ãã¬ãã¥ãŒæ®µéã«ãããããçŸåšã®åœ¢åŒã®å€§èŠæš¡ãããžã§ã¯ãã§ããŸããŸãªçš®é¡ã®ç¹å®ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã å°ãªããšããçŸæç¹ã§ã¯æ¬çªç°å¢ã§äœ¿çšããããšã¯çµ¶å¯Ÿã«ãå§ãã§ããŸããã
ãã®ãã¬ãŒã ã¯ãŒã¯ã®ãã¹ãŠã®æ©èœãšå©ç¹ã«ã€ããŠã¯èª¬æããŸããã
ããã¥ã¡ã³ããä»ã®
èšäºããç°¡åã«èŠã€ããããšãã§ããŸãã ãã®è³æã®äžéšãšããŠãMicrosoft Bot Frameworkã®ãããã®å®çšçãªå®è£
ã«ã€ããŠå°ã詳ãã説æããŸãã
ãããã¯åºæ¬çã«é£ããããã«æãããããããŸãããã銎æã¿ã®ãªããã¬ãŒã ã¯ãŒã¯ã§ã¯ããã«ããã§ãããããããã§ã¯ãããŸããã ããããŒã§è¿°ã¹ãããã«ãMicrosoft Bot Frameworkã䜿çšããæãåçŽãªãããã®å®è£
ã«ã¯10åããããããŸããã ãã®èšäºã®ã³ãŒããèšè¿°ããŠãããã°ããã«ã¯å€ãã®æéãããããAzure Functionsã§å®è¡ããé©åãªãã³ãã¬ãŒããèŠã€ããã®ã«2åããããŸããã
ãªãPHPãªã®ãïŒ
ããŸããŸãªçç±ããããã®è³æã«PHPãéžæããŸããã ãŸããç§ã®ä»äºã®äž»ãªçŠç¹ã¯Webéçºã§ãããå°ãªããšããã·ã¢ã§ã¯PHPããã®åéã§æã人æ°ã®ããèšèªã§ããããã§ãã äŸã«Pythonã³ãŒããå«ããããšãèããŠããŸãããããã§ã«è¥å€§åããè³æãè€éã«ããªãããšã«ããŸããã ãããè峿·±ãå Žåã¯ãå¥ã®èšäºã«èšèŒã§ããŸãã 第äºã«ãMicrosoftã¯ãPHPãŸãã¯Pythonã§ããããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšãå¯èœã§ãããšäž»åŒµããŠããŸãããå®éã«ã¯ããããæ
éã«ç¡èŠããããã¥ã¡ã³ããäŸãæäŸãããSDKããããŸããã ããã¯REST APIãšãã®ããã¥ã¡ã³ãã ãã§ãã éçºè
ã®è¯å¿ã«é¢ããèªèãéçºè
ã¯ããããã©ãã»ã©çŽ æŽããããåçŽã§ãã£ãŠããèªåã®èšèªã§ååã«ææžåãããŠããªãæè¡ãç¡èŠããå¯èœæ§ããããŸãã ä»ã®èšèªã®äŸã¯ãç¹ã«ãasync / awaitããªã©ã®å€éšæ§é ã§ãªãŒããŒããŒããããŠããå Žåã¯ãå¿
ãããèªã¿ããããšã¯éããŸããã
Azure Functionsãéžã¶çç±
Azure Functionsãéžãã çç±ã¯ãèªè
ããã®äŸã®ã³ãŒãã詊ããŠç·Žç¿ããæãç°¡åã§å®äŸ¡ãªæ¹æ³ã ããã§ãã å®éããã®è³æããæ¬æ Œçãªããããèµ·åããããã«å¿
èŠãªããšã¯ã[
Azureã«ããã〠]ãã¿ã³ãã¯ãªãã¯
ããŠãã¢ããªã±ãŒã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒãããã€ãå
¥åããããšã ãã§ãã Azureã¯ãå¿
èŠãªãªãœãŒã¹ãäœæããã³æ§æããGitHubãããµã³ãã«ã³ãŒããããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³å
šäœã®æéãæ¯æãå¿
èŠããªãããã«èª²éãèšå®ããŸãã å®éã«ã¯ãããããåŠçããã¡ãã»ãŒãžã«å¯ŸããŠãããããžã®çŽæ¥ã®åŒã³åºãã«å¯ŸããŠã®ã¿æ¯æãããšã«ãªããŸãã
ãŸãããµãŒããŒã¬ã¹ã¢ãŒããã¯ãã£ã䜿çšãããã€ã¯ããµãŒãã¹ã®ãããã¯ã«èå³ããããAzure Functionsã«ç²ŸéããŠããªãå Žåã¯ãããããç¥ãããã®çŽ æŽãããæ©äŒã«ãªããŸãã ãã ãããã€ã¯ããµãŒãã¹ãšãã®äžã®Azure Functionsã®åœ¹å²ã¯ãå¥ã®èšäºã®å¥ã®ãããã¯ã§ãã
å®è£
ãããšã¯å¥ã«ããã®äŸã¯æå³ããã«æãåçŽã§ãçŽç·çã§ãèªã¿ããããèŠèŠçã«æžãããŠããããšã«æ³šæããŠãã ããã ãã¡ãããäœæ¥ã³ãŒããšããŠäœ¿çšããããšã¯ã§ããŸããã çŸåšãSDK for PHPããªãããããã®äŸãã¯ã©ã¹ãšåå¥ã®é¢æ°ã§è€éã«ããããšã¯å®å
šã«åé·ã§ãããèªã¿ããããšèªèãè€éã«ããŸãã
æºåãã
ãããã£ãŠãæåã«è¡ãå¿
èŠãããã®ã¯ããããèªäœãäœæããããšã§ãïŒ
https :
//dev.botframework.com/bots/new ãããåïŒååïŒã説æïŒèª¬æïŒãããã³URLã®ååä»ãã®ãšã€ãªã¢ã¹ïŒããããã³ãã«ïŒãäœæããŸãã ååã説æãšã¯ç°ãªãããããã®äœæåŸã«ãšã€ãªã¢ã¹ã倿Žããããšã¯ã§ããŸããã çŸæç¹ã§ã¯ãã¡ãã»ãŒãžã³ã°ãšã³ããã€ã³ãããã£ãŒã«ãã空çœã®ãŸãŸã«ããŸããã¢ããªã±ãŒã·ã§ã³ã®èµ·ååŸã«å
¥åããŸãã
[Microsoftã¢ããªIDãšãã¹ã¯ãŒãã®ç®¡ç]ãã¿ã³ãã¯ãªãã¯ããŠãã¢ããªã±ãŒã·ã§ã³ã®èå¥åãšãã¹ã¯ãŒããäœæããŸãã IDãšãã¹ã¯ãŒãã¯ããã£ããã«ã¡ãã»ãŒãžãéä¿¡ãããšãã«ã¢ããªã±ãŒã·ã§ã³ãããããšããŠèªèšŒããããã«å¿
èŠãªã®ã§ãä¿åããŸãã [æäœãå®äºããŠããããã¬ãŒã ã¯ãŒã¯ã«æ»ã]ãã¿ã³ãã¯ãªãã¯ããŸãã
ãã®æºåéšåã¯ã»ãŒçµäºã§ãã 確èªãããã¹ãŠã®å¥çŽã®åæã確èªããŠããç»é²ããã¯ãªãã¯ããŸãã ãã¹ãŠãæ£ãããã°ãããã«ãããããäœæãããŸããããšããã¡ãã»ãŒãžã衚瀺ãããŸãã åç®äžããããã®æºåã¯å®äºã§ãã 圌ã«äŒããããšãæããããšã¯æ®ã£ãŠããŸãã
ã³ãŒã
ãŸãããããèªèšŒçšã®ã¢ããªã±ãŒã·ã§ã³IDãšãã¹ã¯ãŒããèšå®ããŸãã ããªãã¯ããããæåŸã®ã¹ãããã§æã«å
¥ããŸããã åæã«ããããã®åçãæ¿èªããããŒã¯ã³ã«ã€ããŠåãåãããURLãèšå®ããŸãã
$client_id = getenv('MicrosoftAppId'); $client_secret = getenv('MicrosoftAppPassword'); $authRequestUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
ãã®äŸã§ã¯ãç°å¢å€æ°ãããã©ã¡ãŒã¿ãŒãååŸããŸãããã³ãŒãã§çŽæ¥èšå®ã§ããŸãã
$client_id = '26XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'; $client_secret = 'CJPXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $authRequestUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
次ã«ããŠãŒã¶ãŒããã®ã¡ãã»ãŒãžã§POSTãªã¯ãšã¹ãã®æ¬æãèªã¿åããJSON圢åŒãã
$ deserializedRequestActivityé
åã«ãã·ãªã¢ã©ã€ãºããŸãã
$request = file_get_contents(getenv('req')); $deserializedRequestActivity = json_decode($request, true);
ãã®äŸã§ã¯ãAzure Functionsãã€ã³ããŒã§äºåæ§æãããŠãã
reqç°å¢å€æ°ããèŠæ±æ¬æãååŸããŸãã Azure Functionsã䜿çšããŠããªãå Žåã¯ã
phpïŒ//å
¥åã¹ããªãŒã ãããªã¯ãšã¹ãæ¬æãååŸã§ããŸãã
$request = file_get_contents('php://input'); $deserializedRequestActivity = json_decode($request, true);
$ deserializedRequestActivityã«
idãã£ãŒã«ããå«ãŸããå Žåãçä¿¡ãªã¯ãšã¹ããæ£ãããšèŠãªããåŠçãéå§ããŸãã ãŸããã¡ãã»ãŒãžãžã®å¿çãèš±å¯ããããŒã¯ã³ãååŸããå¿
èŠããããŸãã ããŒã¯ã³ã¯ãMicrosoft oAuthãµãŒãã¹ãžã®POSTèŠæ±ãéããŠååŸã§ããŸãã ãªã¯ãšã¹ãã®
ã¹ããªãŒã ã³ã³ããã¹ãã䜿çšããã®ã¯ããã®å®è£
ã®èŠæ ããããã
CURLã䜿çšã§ããããã§ãã
$authRequestOptions = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query( array( 'grant_type' => 'client_credentials', 'client_id' => $client_id,
äžèšã§æ§æãããã¹ããªãŒã ã³ã³ããã¹ããäœæããããããoAuthãµãŒãã¹ãžã®ãªã¯ãšã¹ããå®è¡ããŸãã
$authRequestContext = stream_context_create($authRequestOptions); $authResult = file_get_contents($authRequestUrl, false, $authRequestContext);
èŠæ±ã«å¯Ÿããå¿çãèªã¿åãã
$ authDataé
åã«éã·ãªã¢ã«åããŸãã
$authData = json_decode($authResult, true);
$ authDataã«access_tokenãã£ãŒã«ããå«ãŸããŠããå ŽåãèªèšŒãæåãããšèŠãªããåŠçãç¶è¡ããŸãã åä¿¡ããã¡ãã»ãŒãžã®ã¿ã€ããå€å¥ããçä¿¡ã¡ãã»ãŒãžã®ã¿ã€ããã¡ãã»ãŒãžã§ããå Žåã«åããŠãã¡ãã»ãŒãžãžã®å¿çã®ããã¹ããæºåããŸãã ãã®äŸã§ã¯ãä»ã®ãã¹ãŠã®ã¿ã€ãã®ã¡ãã»ãŒãžãåŠçããããã§ã¯ãããŸããããããã£ãŠãä»ã®ãã¹ãŠã®ã¿ã€ãã«å¯ŸããŠããããã«æ
£ããŠããªãããšãåã«äŒããŸãã
switch ((string)$deserializedRequestActivity['type']) { case 'message': $message = 'New message is received: ' . (string)$deserializedRequestActivity['text']; break; default: $message = 'Unknown type'; break; }
å¿çããå
容ãããã£ãã®ã§ãå¿çããŒã¿ã䜿çšããŠ
$ deserializedResponseActivityã®é
åãäœæããåŸã§Microsoft Bot Frameworkã«è»¢éããŸãã
$deserializedResponseActivity = array(
åçãäœæããã®ã§ããããéä¿¡ããæºåãããŠããŸãããã®ããã«URLãäœæããããã§è»¢éããŸãã å®éãURLã¯çä¿¡POSTèŠæ±ã®ãã©ã¡ãŒã¿ãŒããçµã¿ç«ãŠãããæ¬¡ã®ããã«ãªããŸãã
https:// {activity.serviceUrl} /v3/conversations/ {activity.conversation.id} /activities/ {activity.id}
ã¢ã¯ãã£ããã£ã¯ãã¡ãã»ãŒãžãå«ãçä¿¡POSTèŠæ±ã§ãå
ã»ã©
$ deserializedRequestActivityé
åã«éã·ãªã¢ã«åãããŠããŸãã
{activity.serviceUrl}ã
rtrimã«æž¡ããŠãæåŸã®æåŸã®ã¹ã©ãã·ã¥ãé€å€ããŸããããã¯ãããã§ããå Žåãšããã§ãªãå Žåãããããã§ãã ãŸãã
{activity.id}ã«ã¯
urlencodeãæž¡ãå¿
èŠããããŸããããã«ã¯ãURLãäžæããŠãªã¯ãšã¹ãã劚害ããç¹æ®æåãå«ãŸããŠããããã§ãã
$responseActivityRequestUrl = rtrim($deserializedRequestActivity['serviceUrl'], '/') . '/v3/conversations/' . $deserializedResponseActivity['conversation']['id'] . '/activities/' . urlencode($deserializedResponseActivity['replyToId']);
URLã®æºåãã§ããŸãããããã§ãMicrosoft Bot Connector APIãžã®POSTèŠæ±ãæºåããåä¿¡ã¡ãã»ãŒãžãžã®å¿çãéä¿¡ããŸãã ãŸããã¹ããªãŒã ã³ã³ããã¹ããæ§æããŸãã ãªã¯ãšã¹ãã®
ã¹ããªãŒã ã³ã³ããã¹ãã䜿çšããã®ã¯ããã®å®è£
ã®èŠæ ããããã
CURLã䜿çšã§ããããã§ãã
$responseActivityRequestOptions = array( 'http' => array(
ãããŠããã«äœæããã¹ããªãŒã ã³ã³ããã¹ãããMicrosoft Bot Connector APIãžã®æ§æãããèŠæ±ãå®è¡ããŸãã
$responseActivityRequestContext = stream_context_create($responseActivityRequestOptions); $responseActivityResult = file_get_contents($responseActivityRequestUrl, false, $responseActivityRequestContext);
ãã£ããã®ãŠãŒã¶ãŒã¯å¿çãèªã¿åããæ¬¡ã®ã¡ãã»ãŒãžã®åä¿¡ãšåŠçã«é¢ãããã°ãSTDOUTã¹ããªãŒã ã«æžã蟌ã¿ãŸãã
fwrite(STDOUT, 'New message is received: "' . (string)$deserializedRequestActivity['text'] . '"');
æã¡äžã
äžèšã®ã³ãŒãã¯
GitHubã«ãããããããã³ããŒããããããäžåºŠæžãããããå¿
èŠã¯ãããŸããã ç¬èªã®ç°å¢ã«ã³ãŒãããããã€ããããAzure Functionsã®æ¢è£œã®ãã³ãã¬ãŒãã䜿çšã§ããŸãã ç¬èªã®ç°å¢ã«ã³ãŒãããããã€ããå Žåã¯ã
ãããã¯ãªãã¯ããŠAzure Functionsã®éšåãã¹ãããããŠ
ãã ãã ã
ã³ãŒããAzureã«èªåçã«å±éããã«ã¯ãããäžã®[Azureã«å±é]ãã¿ã³ãã¯ãªãã¯ããŸãã å±éãŠã£ã¶ãŒãã¯ããMicrosoft App IdããšãMicrosoft App Passwordãã®ã¿ãèŠæ±ããŸãã
æºå段éã§åãåã£ããã®ãå
¥åããŠãã ããã ãã³ãã¬ãŒãã§æå®ãããååã¯ãã§ã«äœ¿çšãããŠããããããApp Nameããã£ãŒã«ãã®å€ãå¿
ã倿ŽããŠãã ããããã®ãŸãŸã«ããŠãããšããããã€ã¯å€±æããŸãã ããã«ããã€ãã®ä¹±æ°ã远å ããã ãã§ãã ããã«ãå¿
èŠã«å¿ããŠãæ¢åã®ãªãœãŒã¹ã°ã«ãŒããéžæããããæ°ãããªãœãŒã¹ã°ã«ãŒããäœæã§ããŸãã ãã以å€ã®å Žåããã©ã¡ãŒã¿ãŒã¯ãã®ãŸãŸã«ããŠããã®ãæé©ã§ãã èŠçŽãèªãã§åæããŠãããã賌å
¥ããã¯ãªãã¯ããŠãã ããã
æåŸã«ããããã€ãããã¢ããªã±ãŒã·ã§ã³ãžã®ãªã³ã¯ãååŸãããããã®
æºå段éã§äœæããããã¡ãã»ãŒãžã³ã°ãšã³ããã€ã³ãããã£ãŒã«ãã«è²Œãä»ããå¿
èŠããããŸãã
ã¢ããªã±ãŒã·ã§ã³ããããã€ããããŸã§åŸ
ã¡ããããã€ãããªãœãŒã¹ã°ã«ãŒãã«ç§»åããŸãã
æ°ãããããã€ãããã¢ããªã±ãŒã·ã§ã³ã®ååã§Application Servicesã€ã³ã¹ã¿ã³ã¹å
ã«ç§»åããŸãã
ãã¡ãã»ãŒãžã颿°ã®ååã®äžã®å·ŠåŽã§ããéçºãã¡ãã¥ãŒã«ç§»åããå³åŽã«éããŠã£ã³ããŠã®ã颿°URLã®ååŸããªã³ã¯ãã¯ãªãã¯ããŸãã ãããã¢ããã«ã¯ã次ã®åœ¢åŒã®ãªã³ã¯ããããŸãã
https:// {__} .azurewebsites.net/api/messages?code= JqXXXXXXXXXXXXXXX...
codeãã©ã¡ãŒã¿ãŒã¯ãå¶çºçããã³æªæã®ããæäœããã¢ããªã±ãŒã·ã§ã³ãä¿è·ããŸãã ãã®ããŒãç¥ããªããã°ãã¢ããªã±ãŒã·ã§ã³ã匷å¶çã«åäœãããããšã¯ã§ããŸãããã€ãŸãããªã¯ãšã¹ãã§ã¢ããªã±ãŒã·ã§ã³ããªãŒããŒããŒãããŠãAzureãžã®åéã«è¿œã蟌ãããšã¯ã§ããŸããã ãããã£ãŠããã®ãã©ã¡ãŒã¿ãŒã誰ã«ãèŠããªãããã«ããŠãã ããã
ãªã³ã¯ãã³ããŒããŠããã¬ãŒã ã¯ãŒã¯ããŒã¿ã«ã®
ãããã®
ãªã¹ãã«æ»ãããããããããã®ç·šéã«ç§»åãããã¡ãã»ãŒãžã³ã°ãšã³ããã€ã³ãããã£ãŒã«ãã«ãããã®ç·šéïŒãŸãã¯ãAzure Functionsã䜿çšããªãã£ãå Žåã®äŸã®
messages / run.phpã¹ã¯ãªããã«äŒŒããã®ïŒã貌ãä»ããŸãã
æ€èšŒãšãããã°
æ¥ãã§ããã管çããŒãžãé¢ããªãã§ãã ããã å³åŽã«ã¯ãæ°ããé»åãããã«äœããæžã蟌ãããšããWebãã£ãããŠã£ã³ããŠããããŸãã
Azure Functionsãã³ãã¬ãŒãããã³ãŒãããããã€ããå Žåãæåã®ã¡ãã»ãŒãžãžã®åçã«å€å°ã®é
ããçããŠãå¿é
ããå¿
èŠã¯ãããŸããã ããã¯ãApplication Servicesã€ã³ã¹ã¿ã³ã¹ã®åäœã¢ãŒãã«ãããã®ã§ãã ããšãã°ããã¹ãã£ã³ã°ã³ã¹ããåæžããããã«ããã³ãã¬ãŒãã«ã¯ãããã
ãæ¶è²»èšç»ããå«ãŸããŠããããµãŒãã¹ã¯å¿
èŠã«å¿ããŠãªãœãŒã¹ãæ¶è²»ããŸãã ç°¡åã«èšãã°ãå®éã«å¿
èŠãªå Žåã«ã®ã¿éå§ããã³ã¹ã±ãŒãªã³ã°ãããŸãã ããã«ç°¡åã«èšãã°ããµãŒãã¹ã¯Webããã¯ãåŒã£åŒµãæš©éãæã€èª°ããåŸ
æ©ãããŸã§åŸ
æ©ã§ããŸãã å®è¡ããã»ã¹äžã«äœ¿çšå¯èœãªãªãœãŒã¹ãååã«ãªãå Žåãèªåçã«ã¹ã±ãŒãªã³ã°ãããŸãã ãããã£ãŠãèšç®æéãç¯çŽã§ããŸããããããããªããæ¯æãå¯äžã®ãªãœãŒã¹ã§ã¯ãªãããšã«
泚æããŠãã ããã ã³ãŒã«ãåŠçããåŸããã°ãããããšããµãŒãã¹ã¯åã³ãã¹ãªãŒããç¶æ
ã«ãªããŸãã
æ¢ã«ããã€ãã®ã¡ãã»ãŒãžããããã«éä¿¡ããŠããããããããå¿çãåä¿¡ããŠââããªãå Žåã¯ããŸãã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ã«
ã¢ã¯ã»ã¹ããŸãã ãµãŒãã¹ã³ãŒã«ãã°ïŒSTDOUTã¹ããªãŒã ããã®ããŒã¿ãå«ãïŒãšã³ãŒããã¹ãããŒã«ããããŸãã
ããã©ã«ãã§ã¯ãã³ãŒãã¯
ç¶ç¶çãããã€ã¡ã³ãã¢ãŒãã§GitHubã®ãµã³ãã«ãªããžããªã«ãªã³ã¯ãããŸãã ãããã£ãŠãã³ã³ãœãŒã«ã§ã¯ãèªã¿åãå°çšã³ãŒãã®å¯çšæ§ã«é¢ããèŠåã衚瀺ãããŸãã ã³ãŒãã倿Žããã«ã¯ãç¶ç¶çãããã€ã¡ã³ããå®å
šã«ç¡å¹ã«ãããããªããžããªãè€è£œããŠãµãŒãã¹ããªã³ã¯ããå¿
èŠããããŸãã ã³ã³ãœãŒã«ã¡ãã¥ãŒãããã¢ããªã±ãŒã·ã§ã³æ©èœãã©ã¡ãŒã¿ãŒãã®å·ŠåŽã«ç§»åãããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã®èšå®ããã¿ã³ãã¯ãªãã¯ããå Žåã¯ããã®äž¡æ¹ãè¡ãããšãã§ããŸãã
ãã£ã³ãã«æ¥ç¶
ããã©ã«ãã§ã¯ãSkypeãšWebãã£ããã¯ãããã«æ¥ç¶ãããŸãã ããã«ãTelegramãSlackãªã©ã®ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒãšãé»åã¡ãŒã«ãŸãã¯SMSãã£ãã«ã®äž¡æ¹ãæ¥ç¶ãããŠããŸãã ãŸããç¬èªã®ãã£ããã¢ããªã±ãŒã·ã§ã³ãŸãã¯ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒã䜿çšã§ããREST APIãã€ã¬ã¯ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã ãã¹ãŠã®è¿œå ãã£ãã«ã®èšå®ã«ã¯è©³çŽ°ãªæç€ºã䌎ããŸãããååãšããŠåé¡ãåŒãèµ·ããããšã¯ãªãããããããã®æé ã®è©³çްã«é²ãçç±ã¯ããã«ã¯ãããŸããã
ãã®äŸã®ãããã®ãã¢ãã¬ã¹ãšå€èгãïŒ
ãããã«
ãã€ã¯ããœãããéåžžã«é·ãéèªç¶ãªã€ã³ã¿ãŒãã§ã€ã¹ã«åãçµãã§ããã®ã¯ç§å¯ã§ã¯ãããŸããããçŸæç¹ã§ã¯ããã以äžã§ã¯ãªãã«ããŠããååããã確ãã«æåããŠããŸãã ç§ã®æèŠã§ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ã¯ããã®çŽ æŽãããäŸã§ãã æ¯èŒçæå°éã®åŽåã§ãæãåºããã£ãã«ã«ããŒã®1ã€ãæäŸããŸãã ããã«ããã®æ©èœã¯ããã¹ãŠã®ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒããã³ãã€ã¬ã¯ããã£ããã«ãŒã ã«å
±éã®æ©èœã®äœ¿çšã«éå®ãããŸããã Microsoft Bot Frameworkã䜿çšãããšãç¹å®ã®ã¡ãã»ã³ãžã£ãŒã«åºæã®æ©èœã䜿çšããããã°ã«ãŒããã£ããã§åºæã®ããžãã¯ã䜿çšãããã§ããŸãã ãã¡ããã圌ã¯å¯äžã®ãã®ã§ã¯ãããŸããã誰ããããã«ã€ããŠç°ãªãæèŠãæã£ãŠãããããããŸããã
ãã®èšäºã®ç®çïŒé©åãªããŒã«ãåããWebéçºè
ãã远å ã®ã³ã¹ããšåŽåããããã«æåã®ããããäœæããæ¹æ³ã説æããããšã§ãã ãããŠãããã§å°ãªããšã詊ããŠã¿ãã®ã«ååã§ããããšãé¡ã£ãŠããŸãã
ããããããã¯ééããªãããããã顧客ã«ä»»ããã«ã¯ååã§ã¯ãããŸããã èªç¶ãªã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠè©±ããšãã¯ããŠãŒã¶ãŒãšã®å¯Ÿè©±ã®åœ¢åŒã ãã§ãªãããŠãŒã¶ãŒããã®å¯Ÿè©±ãã©ã®ããã«æããããšããããšãæå³ããŸããããã¯åãUXã§ãã å®è·µã瀺ãããã«ããŠãŒã¶ãŒã¯å®éã«ã¯ãã©ã€ã³ãã³ãã®ã¿ãèªèããåäžã®è³ªåã«çããããšãã§ããªãããããšéä¿¡ããããšã奜ã¿ãŸããã ãã€ã¯ããœããã«ã¯ããã®åé¡ã«å¯Ÿããéåžžã«ãšã¬ã¬ã³ããª
Microsoft Cognitive Servicesãœãªã¥ãŒã·ã§ã³ããããŸãã
Microsoft Cognitive ServicesãšNatural Speechã¯ããã®èšäºã®ãããã¯ãç¶ç¶ã§ããéåžžã«å€§ããéèŠãªéšåã§ãã ããããæåã«ãWebéçºã®ã³ã³ããã¹ãã§ãããããªãã«ãšã£ãŠã©ãã»ã©è峿·±ããèãããã®ã§ããïŒ ããããäžé£ã®èšäºãäœæãã䟡å€ã¯ãããŸããïŒ å°æ¥çã«ã©ã®èšèªãèŠããã§ããïŒ
é¢é£ãªã³ã¯