만들거 :

빅스비에게 방송용 대본을 주면 그대로 말하게 시키기

만약 장문충이 빅스비의 방송용 대본을 길게 쓴다면 말을 못하게 막아버리는 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 말고 다른거 써보기




a15714ab041eb360be3335625683746f0053452fd6a4ec89d73761f69d15cd6e5cde13288e6344e4a4f3e8700c


위에있는게 최종 결과물






코딩 2일차 시작했는데 ai 만들고싶어서 도전해보려고 찾아봤더니

상태머신이란게 ai중에 가장 만들기 쉽다고 해서 상태머신 만들었음


솔직히 뭐가 ai인가 싶은데

상태를 저장하면 ai라고 하니 상태 저장하는걸 삼성 오토메이션 스튜디오로 해볼수있겠다 싶었음


그러기 위해

그 전에 만들었던 갤럭시 홈 미니에 대본 던져주면 읽게하는 플로우를 수정함



7cea817fb6806ff136eb98bf06d604033422cb2cd2f06f556f


7cea817fb6806ffe3eeb98bf06d604030d49fb70af6a4b984c

삼성 오토메이션 스튜디오 개초보코딩:빅스비 커스텀 대본 - 스마트싱스 마이너 갤러리 (dcinside.com)


위에 글에서 갤럭시 홈 미니에게 메시지를 던지는 역할을 하는게


msg.payload = "우흥 스싱붕이들 모두 안녕??";






a15714ab041eb360be3335625683746f0053452fd6a4ec89d73460f69915cd6e7a6de08f9fb658ba0ccd52fab0


a15714ab041eb360be3335625683746f0053452fd6a4ec89d73461f39e13cd6e41782af98bbf163e7e94a43a15

a15714ab041eb360be3335625683746f0053452fd6a4ec89d73461f79c10cd6ed6c425d92288be80ec1f6b763a


템플릿 노드를 쓰면 아에 빈 네모칸 안에다 원하는 내용을 글자로 쓸 수 있고

원하는 내용을 담은 메시지에다 어떤 태그를 달아서 다음 노드에게 메시지로 돌려보낼지 고를 수 있음


msg.payload는 너무 특징이 없어서 msg.galaxyhomemini로 바꾸고

디버그 노드를 붙여서 msg.galaxyhomemini로 받은 내용을 디버그에 써달라고 했음


결과는 존나 잘되는거 확인

msg.payload 안쓰고 msg.galaxyhomemini로 태그를 붙이니까 더 알아보기 쉽고 편하고 좋은듯





a15714ab041eb360be3335625683746f0053452fd6a4ec89d73461f8981ccd6e41f28d159c0ba53a7f8ca3b502


a15714ab041eb360be3335625683746f0053452fd6a4ec89d73466f39f10cd6e68f0da00070fe76b26fbf1fba9


a15714ab041eb360be3335625683746f0053452fd6a4ec89d73466f79f12cd6ed116dbf006bc749b4716d4147e


이제 디버그 노드는 저리 치우고

글자 길이가 길면 차단맥이고

글자 길이가 짧게써야지만 정상적으로 메시지를 보내는


switch 노드로 상태를 3개 만들 생각임


좋은 상태 : 20글자 안으로 썼을 때

주의 상태 : 20글자 넘었지만 30글자 안넘었을 때

차단 상태 : 30글자 넘었을 때



switch 노드에서 property에 msg.galaxyhomemini 쓰고


맨 밑에 + 버튼 누르고

21보다 작을 때 (< 21) : 좋은 상태

21과 20 사이에있을때 (inbetween) : 주의 상태

29 넘었을 때 (29<) : 차단 상태


이렇게 지정했더니 다음 노드로 빠져나가는 길이 세갈래로 늘어났음

비주얼 굿





a15714ab041eb360be3335625683746f0053452fd6a4ec89d73467f89912cd6e02d3c46bd08347eedaf4c7918c

a15714ab041eb360be3335625683746f0053452fd6a4ec89d73467f29912cd6eab2a877a6410928031be469269


문제는 글자 길이를 어떻게 구하느냐인건데

인터넷에 찾아보니 msg.paylod.length 라는 걸로 자동으로 계산해주는 ㅆㅅㅌㅊ 방법이 있었음

msg.payload.length가 가능하다면 msg.galaxyhomemini.length도 작동할것이 분명했기 때문에 했고


따라서 property를 msg.galaxyhomemini 에서 msg.galaxyhomemini.length로 변경


이제 msg.galaxyhomemini에 있는 내용의 글자수를 switch노드 안에서 알아서 세서 상태를 분리하도록 만들기 성공








a15714ab041eb360be3335625683746f0053452fd6a4ec89d73762f59c12cd6e05cea8b06b9e90ff27d824d12f

a15714ab041eb360be3335625683746f0053452fd6a4ec89d73762f29914cd6ebdc205ec6c0aa25d1b6b151226

a15714ab041eb360be3335625683746f0053452fd6a4ec89d73763f39c16cd6efc09a0e6affb0b8de5caa5d636




좋은 상태 :

그냥 통과



차단 상태 :

템플릿 노드에서 넘어온 msg.galaxyhomemini의 내용을 깡그리 지워버리고 덮어씌우는 자바스크립트를 추가

이건 코딩 1일차때 했던거 비교해가면봐서 쉬웠음


msg.galaxyhomemini = "말이 많다 차단"

return msg;





경고상태 :

넘어온 msg.galaxyhomemini의 내용 앞에 경고문을 붙이는 자바스크립트를 추가


msg.galaxyhomemini = "너 말많아 조심해" + msg.galaxyhomemini;

return msg


자바스크립트를 찾아보니까 내용을 쓸 때는 큰따옴표를 써야하는거 자체는 알고있었는데 왜 메시지랑 글자 사이에 +가 필요한지 아직도 모르겠음...

이렇게 메시지를 돌려보내면 다음 노드에 msg.galaxyhomemini는 "너 말많아 조심해 + 일반 주인의 방송" 이 된다는 뜻만 이해함



a15714ab041eb360be3335625683746f0053452fd6a4ec89d73763f29f14cd6e26b95d6a51ff0ea32bdd586f19


a15714ab041eb360be3335625683746f0053452fd6a4ec89d73763f49812cd6edb6ecc58fe14b7a05a7e23b5ba


마지막으로 mydevice 노드에 스마트싱스 토큰을 붙여넣고

command 노드에 갤럭시 홈 미니, speechSynthesis, msg.galaxyhomemini 쓴다음 플로우를 실행하면?????








난생 첫 AI 만들기 성공했다!!! ㅅㅅ


mydevice 노드랑 command 노드만 수정하면 쓸수있게 전체 코드 공유함

https://docs.google.com/document/d/1owY51iNc2C08Q9zLlvVtOO6NNiDwX-9VyLFQ_rL5Y_8/edit?usp=sharing