Aispeech 기반 스마트 대화 앱 (5) - 지정 의도 트리거, 사용자 어고 기능 구현

Aispeech 기반 스마트 대화 앱 (5) - 지정 의 도 를 촉발 하고 사용자 어고 기능 업데이트
  • 1. 지 정 된 의 도 를 촉발
  • 1.1 장치 상태 업데이트
  • 1.2 스 킬 설정 업데이트
  • 1.3 설정 정보 업데이트
  • 1.4 뜨 거 운 단어 정보 업데이트
  • 2. 사용자 어고 업데이트
  • 2.1 로 컬 추가 단어
  • 2.2 로 컬 비우 기 및 단어 추가
  • 2.3 로 컬 삭제 단어
  • 2.4 단어 비우 기
  • 2.5 구름 끝 에 단어 추가
  • 2.6 구름 위 를 비우 고 단어 추가
  • 2.7 클 라 우 드 에서 단어 삭제
  • 2.8 구름 위 비우 기 단어
  • 2.9 단어 창고 대량 업데이트
  • 3. 코드 다운로드
  • 이 박문 은 제 가 Aispeech 를 배 우 는 과정 에서 제 가 겪 은 문제 와 해결 방법 을 공유 하 는 것 입 니 다.글 의 마지막 에 나 는 그 코드 를 올 릴 것 이다.관심 있 는 파트너 는 스스로 다운로드 하 세 요.
    지 정 된 의 도 를 촉발 하 다
    의도 적 인 대 화 를 주동 적 으로 촉발 하 기 를 원한 다 면 필요 할 때 아래 인 터 페 이 스 를 호출 할 수 있 습 니 다.
    매개 변수 설명:
    1) skill 스 킬 명칭, 필수.2) task 퀘 스 트 이름, 필수.3) intent 의도 이름, 필수.4) slots 의미 슬롯 의 key - value JSon 을 선택 할 수 있 습 니 다.
    triggerIntent
    //       ,           。 :DDS           。
    DDS.getInstance().getAgent().triggerIntent("      ", "      ", "      ", new JSONObject().put("      ", "      ").put("      ", "      ").toString());
    

    skillid 트리거 의도:
    SkillIntent skillIntent = new SkillIntent("    id",
            "      ", "      ",
            new JSONObject().put("      ", "      ").put("      ", "      ").toString());
    DDS.getInstance().getAgent().triggerIntent(skillIntent);
    

    1.1 장치 상태 업데이트
    장치 상태 코드 업데이트:
    //        sys.upload.result     
        public void updateProductContext1() {
    
            //    
            ContextIntent intent2 = new ContextIntent("status","{\"platform\":\"open\"}");
            try {
                DDS.getInstance().getAgent().updateProductContext(intent2);
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
        //        sys.upload.result     
        public void updateProductContext2() {
    
            //    
            ContextIntent intent2 = new ContextIntent("status","{\"platform\":\"closed\"}");
            try {
                DDS.getInstance().getAgent().updateProductContext(intent2);
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
    
    

    1.2 스 킬 설정 업데이트
    스 킬 설정 코드 업데이트:
        public void updateSkillContext1() {
    
            ContextIntent intent2 = new ContextIntent("status","{\"platform\":\"Android\"}");
            intent2.setSkillId("2019062000000368");
            try {
                DDS.getInstance().getAgent().updateSkillContext(intent2);
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
        public void updateSkillContext2() {
    
            ContextIntent intent2 = new ContextIntent("status","{\"platform\":\"iOS\"}");
            intent2.setSkillId("2019062000000368");
            try {
                DDS.getInstance().getAgent().updateSkillContext(intent2);
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
    

    1.3 설정 정보 업데이트
    설정 정보 코드 업데이트:
    public void getProductContext() {
            try {
                DDS.getInstance().getAgent().getProductContext("status");
                Log.e(TAG,"productContext:"+DDS.getInstance().getAgent().getProductContext("status"));
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
        public void getSkillContext() {
            try {
                DDS.getInstance().getAgent().getSkillContext("2019062000000368", "status");
                Log.d(TAG,"skillContext:"+DDS.getInstance().getAgent().getSkillContext("2019062000000368", "status"));
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
    

    1.4 업데이트
    키워드 정보 코드 업데이트:
     public void updatePhraseHints() {
            //      airobot   
            PhraseHintsIntent intent = new PhraseHintsIntent();
            intent.setType("vocab");
            intent.setName("sys.   ");
            intent.addData("   ");
            intent.addData("   ");
            try {
                DDS.getInstance().getAgent().updatePhraseHints(intent);
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
        public void clearPhraseHints() {
            try {
                DDS.getInstance().getAgent().updatePhraseHints();
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
    

    사용자 어고 업데이트
    사용자 의 어 고 를 업데이트 하고 기능 에서 사용 할 수 있 도록 하려 면 필요 할 때 아래 인 터 페 이 스 를 호출 할 수 있 습 니 다.업로드 결 과 는 sys. upload. result 메 시 지 를 통 해 얻 을 수 있 습 니 다.
    메모: 업 데 이 트 된 어 고 는 이 장치 에서 만 유효 하 며 다른 장치 에 영향 을 주지 않 습 니 다.매개 변수 설명: vocbIntent: 어고 intent.단어 라 이브 러 리 이름 name, 동작 action, 단어 목록 contents 를 포함 합 니 다.주 1: 단어 라 이브 러 리 이름 이 sys. 연락처 라면 자동 으로 단어 처 리 를 합 니 다.주 2: 동의어 가 있 는 단 어 를 업로드 하려 면 다음 과 같은 형식 을 사용 하 십시오. "단어 값: {단어 값 추출}: 단어 값 추출: {동의어 1}, ${동의어 2}"반환 값: 요청 ID, sys. upload. result 추적 에 사용 합 니 다.
    updateVocabs
    //        
    /*
    //    
    DDS.getInstance().getAgent().updateVocab("    ", new String[]{"  ", "  :   ", "  :   ,  "}, true);
    DDS.getInstance().getAgent().updateVocab("sys.   ", new String[]{"  ", "  "}, true);
     
     
    //    
    DDS.getInstance().getAgent().updateVocab("    ", new String[]{"  ", "  :   ,  "}, false);
     
     
    //      
    DDS.getInstance().getAgent().updateVocab("    ", null, false);
    */
    //          
    final String reqId = DDS.getInstance().getAgent().updateVocabs(
            new VocabIntent()
                    .setName("    ")
                    .setAction(VocabIntent.ACTION_INSERT)
                    .setContents(Arrays.asList("  ", "   :   ,   "))
    );
     
    //               ,      
    DDS.getInstance().getAgent().updateVocabs(
            new VocabIntent()
                    .setName("    ")
                    .setAction(VocabIntent.ACTION_CLEAR_AND_INSERT)
                    .setContents(Arrays.asList("  ", "  :   "))
    );
     
    //        
    DDS.getInstance().getAgent().updateVocabs(
            new VocabIntent()
                    .setName("   ")
                    .setAction(VocabIntent.ACTION_REMOVE)
                    .addContent("   ")
    );
     
    //               
    DDS.getInstance().getAgent().updateVocabs(
            new VocabIntent()
                    .setName("  ")
                    .setAction(VocabIntent.ACTION_CLEAR_ALL)
    );
     
    //      
    DDS.getInstance().getAgent().updateVocabs(
            //          
            new VocabIntent()
                    .setName("sys.   ")
                    .setAction(VocabIntent.ACTION_INSERT)
                    .addContent("   ")
                    .addContent("  "),
            //               ,      
            new VocabIntent()
                    .setName("    ")
                    .setAction(VocabIntent.ACTION_CLEAR_AND_INSERT)
                    .setContents(Arrays.asList("  ", "  :   ")),
            //        
            new VocabIntent()
                    .setName("   ")
                    .setAction(VocabIntent.ACTION_REMOVE)
                    .addContent("   "),
            //               
            new VocabIntent()
                    .setName("  ")
                    .setAction(VocabIntent.ACTION_CLEAR_ALL)
    );
     
     
    //         
    DDS.getInstance().getAgent().subscribe("sys.upload.result", new MessageObserver() {
        @Override
        public void onMessage(String message, String data) {
            Log.e(TAG, message + ":" + data);
            try {
                JSONObject obj = new JSONObject(data);
                if (reqId.equals(obj.optString("reqId", ""))) {
                    Log.d(TAG, "updateVocabs result:" + obj.optBoolean("result", false));
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });
    

    2.1 로 컬 추가 단어
    로 컬 추가 단어 코드:
    public void addVocabCloud(){
            try {
                final String reqId = DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("   ")
                                .setAction(VocabIntent.ACTION_INSERT)
                                .setContents(Arrays.asList("  ", "  "))
                );
                Log.e("xlg","reqId:"+reqId);
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
    
        }
    

    2.2 로 컬 비우 기 및 단어 추가
    로 컬 비우 기 및 단어 코드 추가:
    public void clearAndInsertVocab() {
    
            //               ,      
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_CLEAR_AND_INSERT)
                                .setContents(Arrays.asList("  ", "  "))
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
    

    2.3 로 컬 삭제 단어
    로 컬 삭제 코드:
    public void removeVocab() {
            //        
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_REMOVE)
                                .addContent("  ")
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
    
        }
    
    
        public void removeVocab1() {
            //        
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_REMOVE)
                                .addContent("  ")
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
    
        }
    
    
        public void removeVocab2() {
            //        
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_REMOVE)
                                .addContent("  ")
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    

    비우 기
    로 컬 빈 단어 코드:
    public void clearAllVocab() {
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_CLEAR_ALL)
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    

    2.5 구름 끝
    클 라 우 드 에 단어 코드 추가:
    public void addVocabCloud(){
            try {
                final String reqId = DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("   ")
                                .setAction(VocabIntent.ACTION_INSERT)
                                .setContents(Arrays.asList("  ", "  "))
                );
                Log.e("xlg","reqId:"+reqId);
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    

    2.6 구름 위 를 비우 고 단어 추가
    클 라 우 드 를 비우 고 단어 코드 를 추가 합 니 다:
     public void clearAndInsertVocabCloud() {
    
            //               ,      
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("   ")
                                .setAction(VocabIntent.ACTION_CLEAR_AND_INSERT)
                                .setContents(Arrays.asList("  "))
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    

    2.7 구름 끝
    클 라 우 드 에서 단어 코드 삭제:
    public void removeVocabCloud() {
            //        
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("   ")
                                .setAction(VocabIntent.ACTION_REMOVE)
                                .addContent("  ")
                                .addContent("  ")
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    

    2. 구름 위 비우 기
    클 라 우 드 삭제 단어 코드:
    public void clearAllVocabCloud() {
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        new VocabIntent()
                                .setName("   ")
                                .setAction(VocabIntent.ACTION_CLEAR_ALL)
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    

    2.9 어고 일괄 업데이트
    어고 코드 일괄 업데이트:
        public void updateVocabs() {
            //      
            try {
                DDS.getInstance().getAgent().updateVocabs(
                        //          
                        new VocabIntent()
                                .setName("sys.   ")
                                .setAction(VocabIntent.ACTION_INSERT)
                                .addContent("   ")
                                .addContent("  "),
                        //               ,      
                        new VocabIntent()
                                .setName("sys.  ")
                                .setAction(VocabIntent.ACTION_CLEAR_AND_INSERT)
                                .setContents(Arrays.asList("  ", "  :  ")),
                        //        
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_CLEAR_AND_INSERT)
                                .addContent("  "),
                        //               
                        new VocabIntent()
                                .setName("  ")
                                .setAction(VocabIntent.ACTION_CLEAR_ALL)
                );
                toMain();
            } catch (DDSNotInitCompleteException e) {
                e.printStackTrace();
            }
        }
    
    

    코드 다운로드
    문제 가 해결 되 지 않 거나 코드 에 관심 이 있 는 파트너 는 DUIdemo 2.5. zip 를 직접 다운로드 할 수 있다.

    좋은 웹페이지 즐겨찾기