docomo 지식 Q & A API로 현명한 slackbot을 만들어 보자 (후편)
이전에는 콘솔에서 움직이던 시스템을 slack에 도입하여 현명한 bot화했습니다.
완성한 것은 전체는, github상에서 공개하고 있으므로, 이쪽도를 참고로,.
htps : // 기주 b. 코 m/세 y323/시즈몬군
slackbot 설치 및 설정
slackbot 주위의 설정은 여기이나 여기와 같은 선인 분들의 지혜를 빌렸습니다.
고맙습니다.
$ sudo pip3 install slackbot
링크를 참고로 한 파일 구성은 다음과 같습니다. 이전에 작성한 docomo_dialogue.py
도 plugins
아래로 이동시켰다.
./shitumonkun
| - plugins
| | - __init__.py
| | - my_mention.py
| ` - docomo_dialogue.py
| - config.json
| - run.py
` _ slackbot_setting.py
구성 파일 만들기
api 등을 직접 프로그램에 넣는 것은 번거롭기 때문에 config.json
에 기술해, 그것들을 쓰는 프로그램으로 읽어들이도록 했다. config_default.json
가 있으므로, 그쪽 참고에.
config.json{
"email":"@",
"slack_bot":{
"api_key":"APIキー"
},
"docomo":{
"api_key":"APIキー",
}
}
지난번 작성한 docomo_dialogue.py
에도 config.json
로부터 읽어들이도록 추기.
./plugins/docomo_dialogue.py~~~ 省略 ~~~
'''
config.jsonからAPIキーの取得
'''
def get_api_param( self , _filename ):
json = self.load_json( _filename )
data = json["docomo"]
self._token = data['api_key']
'''
jsonファイルの読み込み
'''
def load_json( self , _filename):
f = open( _filename )
json_data = json.load( f )
f.close()
return json_data
~~~ 省略 ~~~
slackbot_setting.py
에서 API 키를 config.json
로부터 취득하도록 변경.
./slackbot_setting.py# coding: utf-8
import json
'''
jsonファイルの読み込み用
'''
def load_json( _filename):
f = open( _filename )
json_data = json.load( f )
f.close()
return json_data
json = load_json( 'config.json' )
# botアカウントのトークンを指定
API_TOKEN = json['slack_bot']['api_key']
# このbot宛のメッセージで、どの応答にも当てはまらない場合の応答文字列
DEFAULT_REPLY = "なんだこいつ"
# プラグインスクリプトを置いてあるサブディレクトリ名のリスト
PLUGINS = ['plugins']
초기 설정
./run.py# coding: utf-8
from slackbot.bot import Bot
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
print('start slackbot')
main()
멘션 설정
이번에는 @slackbot
또는 다이렉트 메시지로 slackbot에 말한 내용을 모두 docomoAPI에 던지도록 한다.
./plugins/my_mention.py# coding: utf-8
import sys ,os
sys.path.append( os.pardir )
from slackbot.bot import respond_to # @botname: で反応するデコーダ
from slackbot.bot import default_reply
from plugins.docomo_dialogue import DdialogueDriver
# @respond_to('string') bot宛のメッセージ
# stringは正規表現が可能 「r'string'」
ddialogue = DdialogueDriver()
@default_reply()
def question_talk( message ):
text = message.body['text']
ddialogue.listen( text )
# 表示
message.reply( "%s" % ddialogue.speak())
실행
콘솔에서 run.py
를 실행하면 slackbot이 시작됩니다.
$ python3 run.py
실행 결과는 이런 식으로
dr-strage가 slackbot입니다.
모르는 경우는 「모르겠습니다」라고 표시되어 대답할 때는 상위 5개까지의 검색 후보의 URL을 돌려줍니다.
내일의 날씨를 모르는데, 세계 최강의 인간은 대답해 주네요 웃음.
참고
Python을 사용하여 SlackBot을 만드는 방법
Python의 slackbot 라이브러리로 Slack 봇 만들기
Reference
이 문제에 관하여(docomo 지식 Q & A API로 현명한 slackbot을 만들어 보자 (후편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sey323/items/4c81ec43730883c8fc26
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo pip3 install slackbot
./shitumonkun
| - plugins
| | - __init__.py
| | - my_mention.py
| ` - docomo_dialogue.py
| - config.json
| - run.py
` _ slackbot_setting.py
{
"email":"@",
"slack_bot":{
"api_key":"APIキー"
},
"docomo":{
"api_key":"APIキー",
}
}
~~~ 省略 ~~~
'''
config.jsonからAPIキーの取得
'''
def get_api_param( self , _filename ):
json = self.load_json( _filename )
data = json["docomo"]
self._token = data['api_key']
'''
jsonファイルの読み込み
'''
def load_json( self , _filename):
f = open( _filename )
json_data = json.load( f )
f.close()
return json_data
~~~ 省略 ~~~
# coding: utf-8
import json
'''
jsonファイルの読み込み用
'''
def load_json( _filename):
f = open( _filename )
json_data = json.load( f )
f.close()
return json_data
json = load_json( 'config.json' )
# botアカウントのトークンを指定
API_TOKEN = json['slack_bot']['api_key']
# このbot宛のメッセージで、どの応答にも当てはまらない場合の応答文字列
DEFAULT_REPLY = "なんだこいつ"
# プラグインスクリプトを置いてあるサブディレクトリ名のリスト
PLUGINS = ['plugins']
# coding: utf-8
from slackbot.bot import Bot
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
print('start slackbot')
main()
# coding: utf-8
import sys ,os
sys.path.append( os.pardir )
from slackbot.bot import respond_to # @botname: で反応するデコーダ
from slackbot.bot import default_reply
from plugins.docomo_dialogue import DdialogueDriver
# @respond_to('string') bot宛のメッセージ
# stringは正規表現が可能 「r'string'」
ddialogue = DdialogueDriver()
@default_reply()
def question_talk( message ):
text = message.body['text']
ddialogue.listen( text )
# 表示
message.reply( "%s" % ddialogue.speak())
콘솔에서
run.py
를 실행하면 slackbot이 시작됩니다.$ python3 run.py
실행 결과는 이런 식으로
dr-strage가 slackbot입니다.
모르는 경우는 「모르겠습니다」라고 표시되어 대답할 때는 상위 5개까지의 검색 후보의 URL을 돌려줍니다.
내일의 날씨를 모르는데, 세계 최강의 인간은 대답해 주네요 웃음.
참고
Python을 사용하여 SlackBot을 만드는 방법
Python의 slackbot 라이브러리로 Slack 봇 만들기
Reference
이 문제에 관하여(docomo 지식 Q & A API로 현명한 slackbot을 만들어 보자 (후편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sey323/items/4c81ec43730883c8fc26
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(docomo 지식 Q & A API로 현명한 slackbot을 만들어 보자 (후편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sey323/items/4c81ec43730883c8fc26텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)