아무튼 일단 docomo로 대화를 나눠보도록 하겠습니다. API.

11610 단어 docomoAPIPython
※ 현재(2019/01/01) 도코모 한담 대화 API의 서비스는 끝났습니다자연 대화 API의 일부로 제공됩니다.공식적인 참고를 참조하세요.
두 번째 구워도 괜찮지만, 나는 먼저 도코모의 잡담 대화를 시작하고 싶다.
결국 트위터 API와 함께 사용해 대화할 수 있는 BOT를 만들고 싶다.

필요한 물건

  • 파이톤의 실행 환경
  • docomo Developer support 계정
  • docomo API의 API Key
  • 이 페이지부터 계좌를 등록하고 필요사항을 입력해'한담대화'를 점검한 뒤 신청하면 APIKey를 받을 수 있다.
    나는 심사가 통과되면 신청하면 바로 발행하는 줄 알았다.

    일단 인터넷으로 한번 해볼게요.


    이 페이지 API 기능을 테스트합니다.

    제이슨 형식으로 대화를 진행하다.
    HTTP 요청 주체의 두 번째 줄"utt":こんにちは 부분은 대화의 교환 부분이다.
    좋아하는 내용으로 바꾸고 실행 버튼을 누르면 결과가 돌아옵니다.
    {
      "utt": "焼肉が食べたい",
      "context": "",
      "nickname": "光",
      "nickname_y": "ヒカリ",
      "sex": "女",
      "bloodtype": "B",
      "birthdateY": "1997",
      "birthdateM": "5",
      "birthdateD": "30",
      "age": "16",
      "constellations": "双子座",
      "place": "東京",
      "mode": "dialog"
    }
    
    {
      "utt": "焼肉は食べたいんですね?食べたい",
      "yomi": "焼肉は食べたいんですね?食べたい",
      "mode": "dialog",
      "da": "22",
      "context": "W54mlG80QNb-o95J9c7SVA"
    }
    

    매개변수 정보


    오른쪽 위 모서리의 [설명 보기] 버튼에서 매개변수를 참조합니다.
    매개 변수
    설명
    utt
    사용자의 메시지를 입력합니다.255자 이하
    context
    시스템 출력을 입력하는 context를 통해 대화를 계속합니다.255자 이하
    nickname
    사용자의 닉네임을 설정합니다.10자 이하
    nickname_y
    사용자 닉네임의 읽기를 설정합니다.전체 각도 20자 이하(슬라이스 가명만 해당)
    sex
    사용자의 성별을 설정합니다.남자 혹은 여자
    bloodtype
    사용자의 혈액형을 설정합니다.A, B, AB, O 중 임의
    birthdateY
    사용자의 생일(년)을 설정합니다.1~지금까지의 임의의 정수(반각 4자 이하)
    birthdateM
    사용자의 생일(월)을 설정합니다.1~12의 임의 정수
    birthdateD
    사용자의 생일(일)을 설정합니다.1~31의 임의 정수
    age
    사용자의 나이를 설정합니다.양의 정수(반각 3자 이하)
    constellations
    사용자의 별자리를 설정합니다.양자리, 황소자리, 쌍둥이자리, 게자리, 사자자리, 처녀자리, 천칭자리, 전갈자리, 사수자리, 염소자리, 물병자리, 물고기자리 중 하나
    place
    사용자의 영역 정보를 설정합니다.규격서 2.4 "장소 목록"에 포함된 모든 것
    mode
    현재 상호 작용 모드입니다.기본값: 다이어로그나 srtr는 시스템이 출력하는 모드를 입력해서 연결을 계속합니다
    꼭 필요한 것은 utt의 모습이다.
    사용자의 속성에 대해서도 일부분을 생략하거나 생략할 수 있다.
    이름 설정을 통해 답장 내용에 이름이 포함된다고 한다.

    context가 중요한 것 같아요.


    위 불고기 대화에서 말한 "context": "W54mlG80QNb-o95J9c7SVA" 부분.
    다음 인터랙티브 데이터를 보낼 때 context를 같이 보내면 대화가 연결됩니다.
    물론 처음이 없기 때문에 위의 예는 공백이다.
    나는 모든 대화가 context는 다른 것이 될 것이라고 생각했지만, 하나의 대화는매번 발행하다.

    파이톤으로 이동


    참고일상의 메모 - 잡담 대화 API 사용.
    docomo_dialogue.py
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import requests
    import json
    import types
    
    KEY = 'ここに取得したAPIKeyを入れる'
    
    #エンドポイントの設定
    endpoint = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=REGISTER_KEY'
    url = endpoint.replace('REGISTER_KEY', KEY)
    
    #1回目の会話の入力
    utt_content = raw_input('>>')
    
    payload = {'utt' : utt_content, 'context': ''}
    headers = {'Content-type': 'application/json'}
    
    #送信
    r = requests.post(url, data=json.dumps(payload), headers=headers)
    data = r.json()
    
    #jsonの解析
    response = data['utt']
    context = data['context']
    
    #表示
    print "response: %s" %(response)
    
    #2回目以降の会話(Ctrl+Cで終了)
    while True:
        utt_content = raw_input('>>')
        payload['utt'] = utt_content
        payload['context'] = data['context']
    
        r = requests.post(url, data=json.dumps(payload), headers=headers)
        data = r.json()
    
        response = data['utt']
        context = data['context']
    
        print "response: %s" %(response)
    
    다음은 실행 결과입니다.
    >>お魚たべたい!!
    response: 話は変わりますけど、12月1日は映画の日だって、知ってました?
    >>無視しないでください。。。知りません。
    response: 無視に入るようです
    >>冷たい
    response: 大丈夫ですよ。寒いですか?
    >>暑いです
    response: ぱたぱた
    >>ありがとう
    response: ナデナデ
    >>
    

    실행 중 오류 발생


    조금 반한 것은 실행할 때 나타난다requests.exceptions.SSLError.
    어쨌든 다음과 같은 방법으로 해결했습니다.
    $ sudo pip install requests[security]
    

    최후


    이것과 함께 트위터 API를 사용하면 트위터 BOT를 사용할 수 있다.LINE이면 LINE BOT도 가능합니다.
    다만 구성원 분류를 건너뛴 각 사용자에 대해 각자의 대화를 해야 하기 때문에 이런 부분을 다루기가 쉽지 않다.

    좋은 웹페이지 즐겨찾기