in dialogflow-cx/vpc-sc-demo/backend/analytics_utilities.py [0:0]
def register_action(request, response, action, data=None):
"""Register a user action with the analytics database."""
target_database = "prod" if su.is_prod() else "dev"
if data is None:
data = {}
session_id = request.cookies.get("session_id")
if session_id:
tok_response = get_token.get_token(request, token_type="email")
if "response" in tok_response:
logging.error(
"Error retriving user information: %s", tok_response["response"]
)
response.delete_cookie("session_id", domain=su.user_service_domain(request))
response.delete_cookie(
"user_logged_in", domain=su.user_service_domain(request)
)
user_hash = None
else:
user_hash = hashlib.md5(tok_response["email"].encode("utf-8")).hexdigest()
else:
user_hash = None
instance = {
"visit_id": request.cookies.get("visit_id"),
"session_id": session_id,
"user_hash": user_hash,
"action": action.value,
"timestamp": int(datetime.datetime.now().timestamp()),
"action_data": data,
}
validate_data(instance)
client = bigquery.Client(credentials=asu.get_credentials())
table = client.get_table(
client.dataset(os.environ["ANALYTICS_DATABASE"]).table(target_database)
)
insert_response = client.insert_rows_json(json_rows=[instance], table=table)
if insert_response:
logging.error("Error inserting into analytics database: %s", insert_response)
update_visit_cookie(request, response)
return response