azure-functions-python-worker icon indicating copy to clipboard operation
azure-functions-python-worker copied to clipboard

Visual Studio Code Default Python V2 http trigger function does not work with Logic App

Open matteogazzadi opened this issue 1 year ago • 4 comments

I created new python V2 function Http Trigger using Visual Studio Code. I have not touched the auto generated code, just deployed it.

Then from Azure Logic App, i tried to add the function in my workflow but got constantly the error: "Cannot be called from a logic app. It must not have a custom route."

Doing the same for a C# one does indeed work.

I tried also chaning the @app.route(route="test_http") to @app.route(route="req") and @app.route(methods=["POST"]) but the error on Logic App is persisting and actually did not find a way to overcome this, neither any kind of documentation about this.

Here the function code:

import azure.functions as func
import logging

app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)

@app.route(route="test_http")
def test_http(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
    else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )`

matteogazzadi avatar Apr 03 '24 17:04 matteogazzadi

Thanks for reporting we are checking in to this and update .

bhagyshricompany avatar Apr 08 '24 09:04 bhagyshricompany

I managed to get it working in a logic app by leaving the route empty:

@app.function_name(name="HttpTrigger")
@app.route(route="")

def main(req: func.HttpRequest) -> func.HttpResponse:

nveenstra avatar May 08 '24 13:05 nveenstra

I managed to get it working in a logic app by leaving the route empty:

@app.function_name(name="HttpTrigger")
@app.route(route="")

def main(req: func.HttpRequest) -> func.HttpResponse:

nveenstra, Thank you! This works for my case.

nakashimagif avatar Jun 09 '24 13:06 nakashimagif