Upgrade to Pro — share decks privately, control downloads, hide ads and more …

冴えてるBotの育てかた / cool_bot

Jun Watanabe
December 22, 2016

冴えてるBotの育てかた / cool_bot

presented on #zohyomeetup vol.8 https://zohyo.connpass.com/event/44940/

Jun Watanabe

December 22, 2016
Tweet

More Decks by Jun Watanabe

Other Decks in Programming

Transcript

  1. ࡓ͑ͯΔ൴ঁͷҭ͔ͯͨ
    2016/12/22 ࡶฌMeetUp #8
    Jun Watanabe
    B o t

    View Slide

  2. Jun Watanabe @rela1470
    • ORATTA, Inc. Chief Engineer
    • PHPer
    • ࠷ۙ͸ࣾ಺Πϯϑϥ͹͔Γ
    • http://rela.red/

    View Slide

  3. http://asuka-zero.jp/

    View Slide

  4. ChatOps
    ஌ͬͯ·͔͢?

    View Slide

  5. ChatOps = DevOpsͷҰ෦
    1೔10σϓϩΠग़དྷΕ͹৭ʑḿΔ!
    ࣮ݱͷͨΊ։ൃͱӡ༻ΛҰମԽ͠Α͏!
    ͍Ζ͍Ζۀ຿վળ͠Α͏!

    View Slide

  6. ChatOps
    ࡞ۀͷଐਓԽΛ๷͍͗ͨ!
    πʔϧͷઆ໌ॻ࡞੒ͱ͔େม!
    શ෦νϟοτͰग़དྷΔΑ͏ʹ͠Α͏!

    View Slide

  7. ϝϦοτ
    • ͱΓ͋͑ͣ࿩͔͚͠Ε͹ͳΜͱ͔ͳΔͷ
    Ͱɺॳظֶशίετ͕গͳ͍
    • νϟοτϩά=࡞ۀϩά άϧʔϓνϟο
    τͰ΍ͬͯݟ͑ΔԽ!
    • ࡞ۀ͕֤छπʔϧʹލ͍ͬͯͯ΋ҙࣝ͢
    Δ͜ͱແ͘࡞ۀͰ͖Δ
    • εϚϗ౳Ͱ΋νϟοτ͕࢖͑Ε͹OK

    View Slide

  8. Slack
    App
    Directory

    View Slide

  9. ORATTA
    ΦϦδφϧBot

    View Slide

  10. View Slide

  11. σϓϩΠʹඞཁͳ৘ใ
    • ΞϓϦ໊
    • ؀ڥ໊(ຊ൪ or εςʔδ؀ڥ)
    • Git໊
    • ίϝϯτ

    View Slide

  12. View Slide

  13. View Slide

  14. ͍͍ͪͪฉ͔ΕΔͷ
    ໘౗͍͘͞!!

    View Slide

  15. View Slide

  16. View Slide

  17. ΋ͬͱ༥௨Λޮ͔ͤͯཉ͍͠!

    View Slide

  18. Ͳ͏͢Ε͹Α͍͔?
    BotͷධՁج४͸?
    νϡʔϦϯάςετ?

    View Slide

  19. Beer Test

    View Slide

  20. ͦͷBotͱҰॹʹ
    ҿΈʹߦ͖͍͔ͨ?

    View Slide

  21. Ѫ͞ΕΔଘࡏʹͳΔͨΊʹ
    ΍ͬͨ͜ͱ

    View Slide

  22. 1.ࡶஊର࿩

    View Slide

  23. Before

    View Slide

  24. After

    View Slide

  25. After

    View Slide

  26. ͪΐͬͱͨ͠ฦ౴Ͱ΋خ͍͠!

    View Slide

  27. ർΕͨͱ͖ʹ
    ༊΍ͯ͘͠ΕΔ

    View Slide

  28. Docomo ࡶஊର࿩API
    https://dev.smt.docomo.ne.jp/?
    p=docs.api.page&api_name=dialogue&p_name=api_1

    View Slide

  29. BotKitͰͷ࣮૷ྫ
    var context = '';
    var mode = 'dialog';
    var place = '౦ژ';
    var options = {
    url: 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=xxxxx',
    json: {
    utt: message.text,
    place: place,
    context: context,
    mode: mode
    }
    }
    //ϦΫΤετૹ৴
    request.post(options, function (error, response, body) {
    context = body.context;
    mode = body.mode;
    bot.reply(message, body.utt);
    });

    View Slide

  30. ͠ΓͱΓ

    View Slide

  31. ਓ֨͸3छྨ

    View Slide

  32. ؔ੢หϞʔυ

    View Slide

  33. ੺ͪΌΜϞʔυ

    View Slide

  34. 2.ࣗવݴޠೖྗղੳ

    View Slide

  35. Before

    View Slide

  36. After

    View Slide

  37. After

    View Slide

  38. ࣗવʹ࿩͔͚͠Δ͚ͩͰ
    ಺༰Λཧղͯ͘͠ΕΔ

    View Slide

  39. Microsoft LUIS
    Language Understanding Intelligent Service
    https://www.luis.ai/

    View Slide

  40. Botʹ࿩͔͚͠ΒΕΔ಺༰͸
    ܗ͕༷ࣜʑ

    View Slide

  41. ྫ)
    ϨΠϰͷϚελʔ൓ө͓ئ͍͠·͢ɻεςʔδ
    Ͱ͢ɻ
    ը૾ΛΞεΧZEROຊ൪൓ө͓ئ͍͠·͢ʘ
    (^o^)ʗ
    ϦιʔεϑΝΠϧΛΫϩఉͷຊ൪ʹσϓϩΠ͠
    ͍ͯͩ͘͞!
    BLEACHͷϓϩάϥϜϓϩμΫτ൓өOKͰ͢!

    View Slide

  42. શͯʹରԠग़དྷΔΑ͏ͳ
    ਖ਼نදݱͱ͔...

    View Slide

  43. શͯʹରԠग़དྷΔΑ͏ͳ
    ਖ਼نදݱͱ͔...

    View Slide

  44. View Slide

  45. BotKitͰͷ࣮૷ྫ
    var massage_text = encodeURI(message.text);
    var url = 'https://api.projectoxford.ai/luis/v2.0/apps/xxx?
    subscription-key=xxx&verbose=true&q=' + massage_text;
    request( url, function( error, response, body ){
    if( !error && response.statusCode == 200 ){
    console.dir(json[‘entities’]);
    }
    });

    View Slide

  46. ฦΓ஋ྫ
    {
    "query": "ΞεΧͷεςʔδʹlibΛ൓ө͓ئ͍͠·͢ɻ಺༰͸৽ػೳͷ൓өͰ͢ɻ",
    "topScoringIntent": {
    "intent": "σϓϩΠ",
    "score": 0.9743152
    },
    "intents": [
    {
    "intent": "σϓϩΠ",
    "score": 0.9743152
    },
    {
    "intent": "None",
    "score": 0.005910686
    }
    ],
    "entities": [
    {
    "entity": "lib",
    "type": "git໊",
    "startIndex": 9,
    "endIndex": 11,
    "score": 0.889078
    },
    {
    "entity": "εςʔδ",
    "type": "؀ڥ໊",
    "startIndex": 4,
    "endIndex": 7,
    "score": 0.789255
    },
    {
    "entity": "ΞεΧ",
    "type": "ΞϓϦ໊",
    "startIndex": 0,
    "endIndex": 2,
    "score": 0.9694294
    },
    {
    "entity": "৽ػೳͷ൓ө",
    "type": "ίϝϯτ",
    "startIndex": 0,
    "endIndex": 2,
    "score": 0.9510122
    }
    ]
    }

    View Slide

  47. View Slide

  48. ͲͷՕॴ͕
    Կͷཁૉͳͷ͔
    ෼͔Ε͹
    ͋ͱ͸ਖ਼نදݱ

    View Slide

  49. After

    View Slide

  50. ࠷ॳ͸
    ࠜؾΑ͘
    ௐڭ͢Δ

    View Slide

  51. LUISͰ἞ΈऔΕ
    ͳ͔ͬͨ৘ใ͚ͩ
    ฉ͍ͯ͋͛Δ

    View Slide

  52. LUIS͕ࡶஊͩͱ
    ൑அͨ͠Β
    ࡶஊର࿩APIʹ
    ౤͛Δ

    View Slide

  53. Let’s Beer!

    View Slide