首页 > 解决方案 > “如何在谷歌助手操作中通过用户 ID 获取用户名?”

问题描述

我已将我的聊天机器人连接到谷歌助手操作。他们只给出用户ID,如何使用这个用户ID获取用户名?

标签: actions-on-google

解决方案


{`"actions": [
  {
    "description": "Default Welcome Intent",
    "name": "MAIN",
    "fulfillment": {
      "conversationName": "welcome"
    },
    "intent": {
      "name": "actions.intent.MAIN",
      "trigger": {
        "queryPatterns":["talk to Mr Bot"]
      }
    }
  },
  {
    "description": "Rasa Intent",
    "name": "TEXT",
    "fulfillment": {
      "conversationName": "rasa_intent"
    },
    "intent": {
      "name": "actions.intent.TEXT",
      "trigger": {
        "queryPatterns":[]
      }
    }
  }],
"conversations": {
  "welcome": {
    "name": "welcome",
    "url": "https://ac752bb0.ngrok.io/webhooks/google_home/webhook",
    "fulfillmentApiVersion": 2
},
  "rasa_intent": {
    "name": "rasa_intent",
    "url": "https://ac752bb0.ngrok.io/webhooks/google_home/webhook",
    "fulfillmentApiVersion": 2
}

} }

这是我的 action.json,

类谷歌连接器(输入通道):

@classmethod
def name(cls):
    return "google_home"

#def __init__(self):
#    self.out_channel = CustomOutput(url, access_token)

def blueprint(self, on_new_message):

    google_webhook = Blueprint('google_webhook', __name__)

    @google_webhook.route("/", methods=['GET'])
    def health():
        return jsonify({"status": "ok"})

    @google_webhook.route("/webhook", methods=['POST'])
    def receive():
        payload = json.loads(request.data)      
        sender_id = payload['user']['userId']
        intent = payload['inputs'][0]['intent']             
        text = payload['inputs'][0]['rawInputs'][0]['query']        
        if intent == 'actions.intent.MAIN': 
            message = "<speak>Hello! <break time=\"1\"/> Welcome to the Rasa-powered Google Assistant skill. You can start by saying hi."            
        else:
            out = CollectingOutputChannel()         
            on_new_message(UserMessage(text, out, sender_id))
            responses = [m["text"] for m in out.messages]
            message = responses[0]  
        r = json.dumps(
            {
              "conversationToken": "{\"state\":null,\"data\":{}}",
              "expectUserResponse": 'true',
              "expectedInputs": [
                {
                  "inputPrompt": {
                   "initialPrompts": [
                    {
                      "ssml": message
                    }
                  ]
                 },
                "possibleIntents": [
                {
                  "intent": "actions.intent.TEXT"
                }
               ]
              }
             ]
            })
        return r                

    return google_webhook

这是我的谷歌连接器 python 代码,如何修改这个以进行帐户登录


推荐阅读