Almacenar los detalles de la retrollamada en una base de datos de Firestore
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
Almacena los detalles de la retrollamada en una base de datos de Firestore, detiene la ejecución y, a continuación, espera a que se produzcan eventos específicos.
Investigar más
Para obtener documentación detallada que incluya este código de muestra, consulta lo siguiente:
Código de ejemplo
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],[],[],[],null,["# Store callback details in a Firestore database\n\nStores callback details in a Firestore database, halts execution, and then waits for specific events to occur.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Wait for events using callbacks and Eventarc triggers](/workflows/docs/tutorials/create-wait-for-events-callbacks)\n\nCode sample\n-----------\n\n### YAML\n\n main:\n steps:\n - init:\n assign:\n - pubsub_topic: topic-callback\n - storage_bucket: ${sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\") + \"-bucket-callback\"}\n - await_pubsub_message:\n call: await_callback_event\n args:\n event_source: ${pubsub_topic}\n result: pubsub_event\n - await_storage_bucket:\n call: await_callback_event\n args:\n event_source: ${storage_bucket}\n result: storage_event\n - return_events:\n return:\n pubsub_event: ${pubsub_event}\n storage_event: ${storage_event}\n\n await_callback_event:\n params: [event_source]\n steps:\n - init:\n assign:\n - database_root: ${\"projects/\" + sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\") + \"/databases/(default)/documents/callbacks/\"}\n - doc_name: ${database_root + event_source}\n - execution_id: ${sys.get_env(\"GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID\")}\n - firestore_key: ${\"exec_\" + text.split(execution_id, \"-\")[0]}\n - create_callback:\n call: events.create_callback_endpoint\n args:\n http_callback_method: POST\n result: callback_details\n - save_callback_url:\n call: googleapis.firestore.v1.projects.databases.documents.patch\n args:\n name: ${doc_name}\n updateMask:\n fieldPaths: [\"${firestore_key}\"]\n body:\n fields:\n ${firestore_key}:\n stringValue: ${callback_details.url}\n - log_and_await_callback:\n try:\n steps:\n - log_await_start:\n call: sys.log\n args:\n severity: INFO\n data: ${\"Started waiting 1hr for an event from source \" + event_source}\n - await_callback:\n call: events.await_callback\n args:\n callback: ${callback_details}\n timeout: 3600\n result: callback_request\n - log_await_stop:\n call: sys.log\n args:\n severity: INFO\n data: ${\"Stopped waiting for an event from source \" + event_source}\n except:\n as: e\n steps:\n - log_error:\n call: sys.log\n args:\n severity: \"ERROR\"\n text: ${\"Received error \" + e.message}\n - delete_callback_url:\n call: googleapis.firestore.v1.projects.databases.documents.patch\n args:\n name: ${doc_name}\n updateMask:\n fieldPaths: [\"${firestore_key}\"]\n - check_null_event:\n switch:\n - condition: ${callback_request == null}\n return: null\n - log_await_result:\n call: sys.log\n args:\n severity: INFO\n data: ${callback_request.http_request.body.event}\n - return_event:\n return: ${callback_request.http_request.body.event}\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=workflows)."]]