글라스를 스마트하게 하는 기술~그 2:Line MessageAPI~
개요:
마시기에 지각할 것 같아, 먼저 건배해 버렸으면 좋겠지만, 간사에게 연락이 되지 않는, 그런 경험 없습니까?
내가 소속하는 aNo연은, 원격전언 글라스 「스마트 글라스 e간사」를 발표했습니다.
이 기사는, 「스마트 글라스 e 간사」에 사용되고 있는 기술을 소개합니다.
실시예
말하는 유리 "e 간사", Line에서 말해주는 기능 탑재! Line의 대화를 간과하고 있었던 것을 막습니다. #M5Stack #IF_DIY 피 c. 라고 r. 이 m/ybP부2X↑D — aNo연 (@anoken2017) 2018년 10월 7일
시스템 구성
Raspberry PI 준비
사전에 LineDeveloper의 HP에서 계정을 얻고 Developer TrialMessaging의 LineBot을 가져옵니다.
Line Developer
Channel Secret 비밀 키와 Channel Access Token 토큰을 넣고
아래 명령을 치십시오.
export LINE_CHANNEL_SECRET=YOUR_LINE_CHANNEL_SECRET
export LINE_CHANNEL_ACCESS_TOKEN=YOUR_LINE_CHANNEL_ACCESS_TOKEN
line-bot-sdk-python
Line Bot의 Python 샘플을 다운로드하고 python 종속 라이브러리를 설치합니다.
$ git clone https://github.com/line/line-bot-sdk-python.git
$ cd ~/line-bot-sdk-python
$ pip3 install -r requirements.txt
python-osc
python에서 OSC를 사용하는 라이브러리, python-osc를 설치합니다.
pip3 install python-osc
ngrok
Line 서버에서 LAN 내에서 실행되는 RasberryPI에 액세스하려면
네트워크를 릴레이하는 도구인 ngrok을 설치합니다.
$ brew update
$ brew install homebrew/binary/ngrok2
$ ngrok http 8000
ngrok에서 얻은 글로벌 IP 주소를 Line Developer의 WebHookURL에 입력합니다.
구현 예
line-bot-sdk-python 샘플 중 하나, flask-kitchensink,
handle_text_message 함수를 다음과 같이 편집합니다.
Line에서 수신한 메시지를 OSC로 변환하여 전송합니다.
M5Stack에서는 OSC의 메시지를 AquesTalkTTS에 입력하여 음성을 출력합니다.
Raspberry PI
from pythonosc import osc_message_builder
from pythonosc import udp_client
port_num = 10000
parser = argparse.ArgumentParser()
parser.add_argument("--ip", default="192.168.1.", help="The ip of th OSC Server")
parser.add_argument("--port", type=int, default=port_num, help="The port the OSC server is listening on")
args = parser.parse_args()
client = udp_client.SimpleUDPClient(args.ip, args.port)
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
text = event.message.text
cmd = 'talk ' + text
print(cmd)
text2 ='speak to message'
client.send_message("/msg", cmd)
line_bot_api.reply_message(event.reply_token, TextSendMessage(text=text2))
M5stack
#include <M5Stack.h>
#include <ArduinoOSC.h>
#include <AquesTalkTTS.h>
const char* ssid = "";
const char* password = "";
WiFiUDP udp;
ArduinoOSCWiFi osc;
const int recv_port = 10000;
void messageCb(OSCMessage& m) {
String str = m.getArgAsString(0);
int len = str.length();
String cmd = str.substring(0, 4);
String value = str.substring(5);
if (cmd == "talk") {
TTS.playK(value.c_str(), 100);
delay(3000);
}
}
void setup() {
M5.begin();
setupWiFi();
osc.begin(udp, recv_port);
osc.addCallback("/msg", &messageCb);
int iret = TTS.createK("");
}
void loop() {
osc.parse();
}
aNo 연구: htps : // 그 싸움. 지 m도. 코m/
Reference
이 문제에 관하여(글라스를 스마트하게 하는 기술~그 2:Line MessageAPI~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nnn112358/items/16ce1ec07f7297dee9b8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)