2017-11-28 8 views

답변

6

당신이하려는 일에 따라 원하는 방식에 대한 많은 옵션이 있습니다. 유사점이 있지만 정확히 웹 쿠키와 같지 않습니다.

당신이 하나의 대화 동안 유지되는 세션 쿠키의 해당 정보를 원하는 경우, 다음 옵션은 각 사용자에게 전송되는 정보의 일부로서 제공되는 세션 ID를 사용

  • 있습니다 귀하의 성취에서이를 추적하고 추적하십시오.
  • Dialogflow 컨텍스트를 사용하여 보존하려는 정보 저장
  • google-actions JavaScript 라이브러리를 사용하는 경우 app.data 개체에 저장합니다.

당신은 오래 지속 쿠키의 상응하는 다음 옵션

  • 있습니다 호출 할 때마다 사용자에게 전송 된 정보의 일부로서 제공 익명의 사용자 ID를 사용하고 대화간에 정보를 유지하려면 당신의 성취에서 이것을 추적합니다.
  • actions-on-google 자바 스크립트 라이브러리를 사용하는 경우 app.userStorage 개체에 저장하면됩니다.
  • data.google.userStorage 아래의 JSON 응답에 문자열의 일부로 저장합니다.

다른 세션 ID는 당신이 가지고있는 각각의 대화를 위해 만든이

세션 ID

각각에 대한 좀 더 정보를 제공합니다. sessionId 매개 변수로 웹 훅으로 전송 된 JSON을 검사하여이 세션 ID를 가져올 수 있습니다.

그런 다음 사용자가 관리하는 일종의 데이터 저장소에서이를 조회 할 수 있습니다.

Dialogflow 컨텍스트

컨텍스트는 Dialogflow에서 사용할 수있는 강력한 도구입니다. 컨텍스트의 이름, 컨텍스트의 수명, 웹 휴크로 전달되는 대화의 횟수 및 문맥과 관련된 매개 변수 (문자열 키/값)를 표시합니다. 한 쌍).

컨텍스트는 어떤 의도가 호출 될지 결정하는 데 특히 유용합니다. Dialogflow가 인 텐트를 인식 할 수 있도록 활성화해야하는 컨텍스트를 나타낼 수 있습니다.

당신은 액션 --구글에 Node.js를 라이브러리,이 같은 것을 사용하여 컨텍스트를 설정할 수 있습니다 사용하는 경우 : 당신은 당신이 app.ask() 또는 app.tell()를 호출하기 전에이 작업을 수행 할 필요가

var contextParameters = { 
    foo: "Something foothy", 
    bar: "Your local bar." 
}; 
app.setContext("remember_this", 5, contextParameters); 

.

아니면 응답

"contextOut": [ 
    { 
    "name": "remember_this", 
    "lifespan": 5, 
    "parameters": { 
     "foo": "Something foothy", 
     "bar": "Your local bar." 
    } 
    } 
] 

당신은 webhook가 호출되는 다음의 contextOut 블록의 일환으로 JSON에서 해당 작업을 수행 할 수 있습니다, 당신은 result.contexts 배열을보고 또는 중이 컨텍스트를 가져올 수 있습니다 라이브러리의 app.getContext() 또는 app.getContextArgument() 메서드를 사용합니다. 라이브러리를 사용하는 경우 app.data

를 사용

, 구글은 당신을 위해 일부 작업을하고있다. app.data 개체가 생성됩니다. 개체에 설정 한 값은 세션 수명 동안 사용할 수 있습니다. 나중에 웹 훅에 대한 호출에서 값을 읽습니다.

은 (커버에서, 구글은 이것에 대한 컨텍스트를 사용하기 때문에 마술은 없다. 두 작품을 함께 당신은 둘 다 할 무료입니다.)

익명 사용자 ID

사용자가 먼저 작업을 사용하면 사용자 ID가 생성됩니다. 이 ID는 특정 활동에 대한 특정 정보에 대한 액세스 권한을 부여하지 않으며 다른 조치에 사용되지 않지만 볼 때마다 이전 발생시에 사용했던 사용자와 동일한 사용자임을 확신 할 수 있습니다. 그러나 쿠키처럼 사용자가 재설정 할 수 있으며 사용자의 작업에 대해 새로운 ID가 생성됩니다.

JSON에서 originalRequest.user.userId 또는 app.getUser().userId을 사용하면됩니다. 일단 데이터 저장소를 사용하면이 사용자에 대한 정보를 저장하고 검색하는 일종의 데이터 저장소를 사용하게됩니다. app.data 유사

app.userStorage를 사용

, 각 사용자에 대해 당신을 위해 만들어지는 app.userStorage 목적이있다. 이 개체에 대한 모든 변경 사항은이 사용자와의 대화간에 저장됩니다.

그러나 app.data과 달리 컨텍스트에 저장되지 않습니다. 자체 저장 방법이 있습니다. 당신은 행동 - 온 - 구글 라이브러리를 사용하지 않는 경우 어떤 리드 ...

하는

JSON에 저장, 당신은 여전히 ​​직접 응답과 요청 JSON을 통해 userStorage에 액세스 할 수 있습니다. 이것을 문자열로 저장해야하지만보다 복잡한 객체를 저장해야하는 경우 일반적인 방법은 문자열을 JSON으로 문자열 화하는 것입니다.

이 값은 응답에 data.google.userStorage 아래에 저장되며 웹 훅 요청에서 originalRequest.data.user.userStorage 아래에서 검색 할 수 있습니다. https://developers.google.com/actions/identity/account-linking : 당신이 계정에 연결을 체크 아웃 할 수 있습니다처럼

+0

저는 Robinhood Trading Account 포트폴리오 가치, 현금 및 주식 가치를 알려주는 에이전트를 만들었습니다. 내가 이것들 중 하나를 물어볼 때마다, 나의 백 엔드 웹 훅 (CGI python 스크립트)이 호출되어 상류 로빈 서버를 쿼리합니다. 나는 잠시 동안 모든 정보를 캐싱함으로써이를 피하고자합니다. 또한, 내 사용자 이름과 암호는 현재 CGI python에 하드 코딩되어 있습니다 .--(사용자의 계정 데이터를 가져 와서 저장하는 방법을 알 수 없습니다.) 답변 주셔서 감사합니다 .- –

+0

후속 질문, 배경 제공, 정확히 필요한 것. 이 질문에 대한 답변을 수락 및/또는 upvoting하면 감사하겠습니다. 필요한 정보가 없으면 추가 정보가 필요합니다. 원래 질문을 업데이트하여 시도한 것을 명확히하고, 시도한 것에 대해 효과적이지 않은 정보를 제공하고 가능한 한 많은 추가 정보를 제공하여 도움을줍니다. . – Prisoner

0

같은 Google 클라우드 데이터베이스를 사용할 수는 소리. 계정 연결을 사용하면 고유 키를 제공하여 Google과 교환하는 최종 사용자 정보를 수집 할 수 있습니다. 이 고유 키는 Google로부터받은 모든 요청의 일부가되므로 고유 키를 얻으면 최종 사용자로부터 수집 한 정보를 조회합니다.귀하의 경우 최종 사용자 정보에 액세스하는 데 필요한 자격 증명 또는 기타 키를 저장합니다. 초기 연결 후 획득 한 모든 새 데이터는 계정 링크 중에 얻은 고유 키를 기반으로 수집 된 원래 정보와 함께 저장 될 수 있습니다.