최소 Python 지식으로 * 유용한 * Alexa 기술 만들기

9736 단어 pythonalexatutorial
나는 알렉사 스키스 상점의 대다수 맞춤형 제품의 엉망진창인 품질에 대해 매우 실망했다."농담이라도 해줘", "재밌는 사실을 말해줘", "랜덤으로 사실을 말해줘", "숲의 소리를 해줘", "바다의 소리를 해줘"...마지막으로, 나의 메아리 장치는 넷플릭스를 열고 닫으며 가열 온도를 조절하는 데 사용된다.
없어졌어!Python (또는 Node.js) 을 사용하여 사용자 정의 기술을 만드는 것은 매우 쉽습니다. 이것은 실제적으로 매우 유용하기 때문에, 이 기술을 자주 터치하는 것을 발견할 수 있습니다.왜냐하면'랜덤 팩트'를 몇 번이나 할 수 있습니까?

어떻게 진정으로 유용한 물건을 찾아낼 것인가


내 예에서, 나는 내가 하루하루 휴대전화나 컴퓨터로 반복할 수 있는 작은 동작을 기억하는 데 전념했다.기계적인 임무는 불쾌하거나 레저로 여겨질 수 있지만, 어쨌든 해야 한다.같은 정보를 자주 검사하는 것을 발견했는지 생각해 보세요.

자전거 대여 상태


나는 바르셀로나에 살고 있는데, 여기에 비싱이라는 공공 자전거 임대 시스템이 있다.현재 집에서 일할 때 나는 그것을 거의 사용하지 않지만, 내가 그것을 필요로 할 때, 나는 집을 떠나기 전에 휴대전화에 있는 앱을 켜서 우리 집 부근의 역에 사용할 수 있는 자전거가 있는지 알아보려고 한다.비흥live status page in JSON format이 하나 있기 때문에 이것은 나의 알렉사 기술의 완벽한 선택이다.

개시하다


우선, 무료 계정이 없으면 하나를 만들고 로그인해야 합니다Skills dashboard

준비가 되면 '기술 만들기' 를 누르고 다음 절차에 따라 Python을 사용하여 처음부터 사용자 정의 기술을 만듭니다. (이 강좌의 예가 Python임에도 불구하고 Node.js를 선택할 수 있습니다.)
너는 너의 계기판에서 빈 기술을 얻어야 한다

구성 기술


다음과 같은 두 가지 핵심 사항을 이해해야 합니다.
  • 호출
  • 호출은 알렉스에게 당신의 기술로 의사소통을 하고 싶다는 것을 알게 하기 위해 어떤 이름이나 짧은 말을 알려줘야 하는 것이다.
    예를 들어 나는 가열 온도를 제어하는 기술이 있기 때문에 문장인'Alexa, 가열 장치에 온도를 한 번 낮추라고 알려라'에서 가열(또는 가열, 왜냐하면 Alexa는 문법 입자에 매우 유연한 것 같기 때문에)은 호출된다.아니면 "알렉사, 엑스박스에 협도 사냥꾼에게 알려주세요."Xbox는 일종의 소환이 될 것입니다.

    그래서 제 예에서 저는 Estación de bicing을 사용하고'bicing station'(저는 스페인어로 기술을 창조합니다)으로 번역했습니다.
  • 의도
  • 그럼, 당신의 기술로 얼마나 많은 동작을 처리할 계획입니까?예제 의도는 (가열의 경우) 온도 설정, 켜기 및 끄기, 모드 변경입니다.내 자전거 임대 상태 기능에 대해 나는 단지'자전거 있나요'를 만들고 싶을 뿐이다.
    대시보드에 원하는 수만큼 추가

    모든 의도에 대해, 너는 그것을 촉발하는 문장을 추가해야 한다.나의 예에서 나는 일련의 문장을 열거했다. 예를 들어'자전거 있어요','자전거 있어요','자전거 있어요?'등이다.그리고 아들.가능성을 고려해 보자.

    코드 추가


    호출과 의도 설정 코드를 사용한 후 언어 모델을 저장하고 구축하십시오.이러한 버튼은 의도 화면에서 찾을 수 있습니다.변경할 때마다 재구축이 필요합니다.
    페이지 위쪽의 [코드] 탭을 클릭합니다.너는 여기서 너의 코드를 편집할 수 있다.VScode나 가장 좋아하는 로컬 편집기에서도 설정할 수 있지만, 설정이 길어야 하기 때문에, 이 설정을 계속할 것입니다.
    이러한 항목을 lambda_function.py 파일에 추가했습니다.
    class HayBicisIntentHandler(AbstractRequestHandler):
        """Handler for HayBicis Intent."""
        def can_handle(self, handler_input):
            # type: (HandlerInput) -> bool
            return ask_utils.is_intent_name("HayBicis")(handler_input)
    
        def handle(self, handler_input):
            # type: (HandlerInput) -> Response
            bikes_available = get_bikes(244)
            speak_output = bikes_available
    
            return (
                handler_input.response_builder
                    .speak(speak_output)
                    .response
            )
    
    
    과정 구조가 자동으로 완성됩니다.너는 단지 몇 가지 일을 바꾸기만 하면 된다.내 상황에서 나는 정확한 이름을 사용했다.
    return ask_utils.is_intent_name("HayBicis")
    
    그리고 내 handle 방법은 다음과 같은 speak_output 응답을 사용해야 한다고 정의했다.
    bikes_available = get_bikes(244)
    speak_output = bikes_available
    
    그럼 이get_bikes(244) 함수는 무엇입니까?이것은 내가 기술에 포함하는 매우 간단한 사용자 정의 코드다.Bicing JSON live status에 요청을 보내고 Alexa에 중복되기를 원하는 메시지가 포함된 문자열을 반환합니다.
    def get_bikes(station_id):
        resp = requests.get("https://api.bsmsa.eu/ext/api/bsm/gbfs/v2/en/station_status")
        available_bikes = list(filter(lambda item: item["station_id"] == station_id, resp.json()["data"]["stations"]))[0]["num_bikes_available_types"]
        return f"""Hay {available_bikes["mechanical"]} bicis mecánicas y {available_bikes["ebike"]} eléctricas."""
    
    
    코드는 json을 읽어들인 다음 station id로 우리가 제공한 id와 일치하는 사이트만 사용할 수 있도록 응답을 필터합니다.선택한 사이트에서 사용 가능한 자전거의 수를 얻습니다.
    마지막으로, 파일 밑에 당신의 의도를 등록하는 것을 잊지 마세요. 예를 들어:
    sb = SkillBuilder()
    
    sb.add_request_handler(LaunchRequestHandler())
    sb.add_request_handler(HayBicisIntentHandler())
    sb.add_request_handler(HelpIntentHandler())
    sb.add_request_handler(CancelOrStopIntentHandler())
    sb.add_request_handler(SessionEndedRequestHandler())
    

    테스트


    이것이 바로 모든 이야기다.물론, 우리는 지구화 사용자 설정 같은 다른 세부 사항을 추가해야 한다. 이렇게 하면 누구나 자신의 라디오를 선택할 수 있다. (지금은 내가 사는 라디오에 하드코딩되었다.)그러나 우리는 앞으로의 교과서에서 한 걸음 한 걸음 진행할 수 있다.
    지금은 테스트할 때다.코드를 저장한 후 코드 편집기 오른쪽 위에 있는 '배치' 단추를 누르고 '테스트' 옵션을 누르십시오.
    여기서 마이크를 사용할지 간단하게 질문을 입력할지 선택할 수 있다.이 테스트를 통해 Alexa 가 예상한 대로 반응하는지 확인할 수 있습니다.

    위대하다이것이 바로 우리가 원하는 결과다.우리는 지금 알렉사 기술이 하나 생겼다. 우리는 단지 몇 분 만에 완성했다.

    Alexa 스토어에 배포


    나는 아직 이 프로젝트를 상점에 배치하지 않을 것이다. 왜냐하면 다른 사람에게 유용한 관건적인 부분 (자신의 사이트를 설치하는 것) 이 부족하기 때문이다.하지만 기술을 배치하는 경향이 있다면'분배'옵션을 클릭하여 이 과정을 시작할 수 있습니다.행운을 빕니다!

    GitHub 재구매


    https://github.com/rubenwap/haybicis

    좋은 웹페이지 즐겨찾기