만들거 :
빅스비에게 방송용 대본을 주면 그대로 말하게 시키기
만약 장문충이 빅스비의 방송용 대본을 길게 쓴다면 말을 못하게 막아버리는 AI 만들기
본인 스펙 :
스마트싱스 4개월차 스싱린이 iot린이
삼성 오토메이션 스튜디오 노코드로만 조금 씀
직장에서 하는일이랑 개발이랑 1도 관련x
문과 빡대가리
코딩 도전 2일차
준비물 :
1. inject 노드 (보라색) 1개
2. template 노드 (옥반지색) 1개
3. function 노드 (에메랄드색) 1개
4. debug 노드 (초록색) 1개
5. mydevice 노드 (핑크색) 1개
6. command 노드 (망고색) 1개
7. switch 노드 (오렌지색) 1개
목표 :
template 노드 써보기
switch 노드 써보기
대본 길이 감지하는 코드 만들기
msg에서 기본값인 payload 말고 다른거 써보기
위에있는게 최종 결과물
코딩 2일차 시작했는데 ai 만들고싶어서 도전해보려고 찾아봤더니
상태머신이란게 ai중에 가장 만들기 쉽다고 해서 상태머신 만들었음
솔직히 뭐가 ai인가 싶은데
상태를 저장하면 ai라고 하니 상태 저장하는걸 삼성 오토메이션 스튜디오로 해볼수있겠다 싶었음
그러기 위해
그 전에 만들었던 갤럭시 홈 미니에 대본 던져주면 읽게하는 플로우를 수정함
삼성 오토메이션 스튜디오 개초보코딩:빅스비 커스텀 대본 - 스마트싱스 마이너 갤러리 (dcinside.com)
위에 글에서 갤럭시 홈 미니에게 메시지를 던지는 역할을 하는게
msg.payload = "우흥 스싱붕이들 모두 안녕??";
템플릿 노드를 쓰면 아에 빈 네모칸 안에다 원하는 내용을 글자로 쓸 수 있고
원하는 내용을 담은 메시지에다 어떤 태그를 달아서 다음 노드에게 메시지로 돌려보낼지 고를 수 있음
msg.payload는 너무 특징이 없어서 msg.galaxyhomemini로 바꾸고
디버그 노드를 붙여서 msg.galaxyhomemini로 받은 내용을 디버그에 써달라고 했음
결과는 존나 잘되는거 확인
msg.payload 안쓰고 msg.galaxyhomemini로 태그를 붙이니까 더 알아보기 쉽고 편하고 좋은듯
이제 디버그 노드는 저리 치우고
글자 길이가 길면 차단맥이고
글자 길이가 짧게써야지만 정상적으로 메시지를 보내는
switch 노드로 상태를 3개 만들 생각임
좋은 상태 : 20글자 안으로 썼을 때
주의 상태 : 20글자 넘었지만 30글자 안넘었을 때
차단 상태 : 30글자 넘었을 때
switch 노드에서 property에 msg.galaxyhomemini 쓰고
맨 밑에 + 버튼 누르고
21보다 작을 때 (< 21) : 좋은 상태
21과 20 사이에있을때 (inbetween) : 주의 상태
29 넘었을 때 (29<) : 차단 상태
이렇게 지정했더니 다음 노드로 빠져나가는 길이 세갈래로 늘어났음
비주얼 굿
문제는 글자 길이를 어떻게 구하느냐인건데
인터넷에 찾아보니 msg.paylod.length 라는 걸로 자동으로 계산해주는 ㅆㅅㅌㅊ 방법이 있었음
msg.payload.length가 가능하다면 msg.galaxyhomemini.length도 작동할것이 분명했기 때문에 했고
따라서 property를 msg.galaxyhomemini 에서 msg.galaxyhomemini.length로 변경
이제 msg.galaxyhomemini에 있는 내용의 글자수를 switch노드 안에서 알아서 세서 상태를 분리하도록 만들기 성공
좋은 상태 :
그냥 통과
차단 상태 :
템플릿 노드에서 넘어온 msg.galaxyhomemini의 내용을 깡그리 지워버리고 덮어씌우는 자바스크립트를 추가
이건 코딩 1일차때 했던거 비교해가면봐서 쉬웠음
msg.galaxyhomemini = "말이 많다 차단"
return msg;
경고상태 :
넘어온 msg.galaxyhomemini의 내용 앞에 경고문을 붙이는 자바스크립트를 추가
msg.galaxyhomemini = "너 말많아 조심해" + msg.galaxyhomemini;
return msg
자바스크립트를 찾아보니까 내용을 쓸 때는 큰따옴표를 써야하는거 자체는 알고있었는데 왜 메시지랑 글자 사이에 +가 필요한지 아직도 모르겠음...
이렇게 메시지를 돌려보내면 다음 노드에 msg.galaxyhomemini는 "너 말많아 조심해 + 일반 주인의 방송" 이 된다는 뜻만 이해함
마지막으로 mydevice 노드에 스마트싱스 토큰을 붙여넣고
command 노드에 갤럭시 홈 미니, speechSynthesis, msg.galaxyhomemini 쓴다음 플로우를 실행하면?????
난생 첫 AI 만들기 성공했다!!! ㅅㅅ
mydevice 노드랑 command 노드만 수정하면 쓸수있게 전체 코드 공유함
https://docs.google.com/document/d/1owY51iNc2C08Q9zLlvVtOO6NNiDwX-9VyLFQ_rL5Y_8/edit?usp=sharing
js 에서 "" + "" 는 둘을 이어붙여줘 "hello" + "world" 는 "helloworld" 야
아 이제야 알겠다 숫자는 더하면 커지는데 글자를 왜더해야하는건지 몰라서 인터넷 강좌 따라하면서도 너무 이해가 안됐는데 그냥 이어붙는거였다니 ㅋㅋ;
msg.payload.slice(0, 30) 하면 글자수 30개로 잘라버릴 수도 있을 거야
오늘은 이거 도전해봐야겠다!!