def extract_text_uri()

in cloud-functions/bigquery-external-function/main.py [0:0]


def extract_text_uri(request: flask.Request) -> flask.Response:
    try:
        project_id = os.environ['PROJECT_ID']
        region = os.environ['ENV_CLOUD_FUNCTION_REGION']
        client = SpeechClient(client_options=ClientOptions(api_endpoint=f"{region}-speech.googleapis.com"))
        config = cloud_speech.RecognitionConfig(
            auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
            language_codes=["en-US"],
            model="chirp"
        )
        calls = request.get_json()['calls']
        replies = []
        for call in calls:
            uri=call[0]
            print("uri: ", uri)
            content = urllib.request.urlopen(uri).read()
            request = cloud_speech.RecognizeRequest(
                recognizer=f"projects/{project_id}/locations/{region}/recognizers/_",
                config=config,
                content=content)
            response = client.recognize(request=request)
            partial_result = ""
            for result in response.results:
                partial_result = partial_result + result.alternatives[0].transcript
            replies.append(partial_result)    
        return flask.make_response(flask.jsonify({'replies': replies}))
    except Exception as e:
        return flask.make_response(flask.jsonify({'errorMessage': str(e)}), 400)