마쓰코 디럭스와의 유사도를 회신 해주는 마츠코 bot을 개발했다

소개



이번에는 LINEmessagingAPI와 MicrosoftFaceAPI를 조합하여 마츠코 디럭스와 얼마나 비슷한지를 회신 해주는 마츠코 bot를 개발했습니다. 다음과 같이 마츠코가 회신 해줍니다. 확실히 마츠코에 대해 높은 수치를 내고 있습니다.


개발 환경


  • macOS Mojave 10.14.2
  • 파이썬 3.6

  • 마츠코 디럭스란?



    모르는 사람은 없다고 생각합니다만 일단 설명해 둡니다. 마츠코 디럭스 씨는 일본의 코멘테이터에서 현재 많은 프로그램에 출연되고 있으며, 독설 캐릭터로 대인기입니다. 자세한 내용은 Wikipedia을 참조하십시오.

    구현



    이번에는 다음과 같이 구현합니다. 이미 bot를 작성하고 있는 전제로 진행해 갑니다.


    Heroku 설정



    이쪽은 이미 많은 분이 자세하게 설명하고 있으므로 그쪽을 본 것이 알기 쉬울까 생각합니다. 여기의 기사를 참고로 했습니다. 터미널에서 다음과 같이 설정합니다.
    $ heroku login
    $ heroku create matsuko-bot
    $ heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの欄の文字列" --app matsuko-bot
    $ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの欄の文字列" --app matsuko-bot
    

    설정 파일 만들기



    각각 설정 파일을 작성합니다.

    runtime.txt
    python-3.6.6
    

    requirements.txt
    Flask==0.12.2
    line-bot-sdk==1.5.0
    requests==2.18.4
    gunicorn
    

    Procfile
    web: python main.py
    

    main.py
    #一部のみ
    
    @handler.add(MessageEvent, message=TextMessage)
    def handle_message(event):
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='顔画像を送信しなさい'))
    
    
    @handler.add(MessageEvent, message=ImageMessage)
    def handle_image(event):
        message_id = event.message.id
        message_content = line_bot_api.get_message_content(message_id)
        image = BytesIO(message_content.content)
    
        r_1 = requests.post(url_detect, headers = headers_detect, params = params, data = open('matsuko.jpg','rb'))
        r_2 = requests.post(url_detect , headers = headers_detect, params = params, data = image)
        faceId = r_1.json()[0]['faceId']
    
        try:
            faceIds = r_2.json()[0]['faceId']
            body['faceId'] = faceId
            body['faceIds'] = [faceIds]
            r_find_similar = requests.post(url_similar, headers = headers_similar, data = json.dumps(body)).json()[0]['confidence']
            line_bot_api.reply_message(event.reply_token,TextSendMessage(text='私との類似度は{}'.format(r_find_similar)))
    
        except:
            line_bot_api.reply_message(event.reply_token,TextSendMessage(text='顔が検出できなかったですよ'))
    

    matsuko.jpg (이쪽의 얼굴 이미지와 비슷한지를 비교합니다)


    파일 구조
    $ tree
    .
    ├── Procfile
    ├── main.py
    ├── matsuko.jpg
    ├── requirements.txt
    └── runtime.txt
    

    Heroku에 배포


    $ git init
    $ git add .
    $ git commit -m "new commit"
    $ git push heroku master
    

    git push 할 수 없으면 다음 명령을 실행하십시오.
    $ git remote add heroku https://git.heroku.com/アプリケーション名.git
    

    디버깅을 위해 로그 확인
    $ heroku logs --tail -a <アプリケーション名>
    

    webhook 설정



    LINEbot의 설정 화면에서 다음과 같이 설정합니다.
    Webhook 제출: 사용
    Webhook URL: https://<응용 프로그램 이름>.herokuapp.com/callback

    요약



    이번에는 LINE과 Microsoft의 API를 조합하여 얼굴 인식의 bot를 만들어 보았습니다. 웹 관련 지식은 전혀 없었습니다만 의외로 간단하게 할 수 있었습니다(Heroku의 설정으로 조금 고전했다). 앞으로는 스스로 API 서버를 구축하여 편리한 LINEbot을 만들어 가고 싶습니다. 이번 구현은 GitHub에 실어 둡니다.

    좋은 웹페이지 즐겨찾기