想知道如何设计 Azure 逻辑应用程序
Want to know how to design Azure Logic Apps
我的工作值得 Azure 逻辑应用程序只是失败。
- 收到电子邮件后,
- 检查电子邮件正文的大小并删除 HTML 标签
- 如果邮件正文大小小于10,要发送警告邮件(内容太短)。
第 1 步没问题,因为 MS 文档中有类似案例。
对于第2步,我设计了http trigger app函数如下,
import logging
import azure.functions as func
import json
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
logging.info(req.get_body())
#message = req.get_body().decode()
mess = req.get_body().decode()
message = str(mess)
message = message.replace("\r\n", " ")
####
out = remove_html_tags(message)
logging.info(out)
###
# some JSON:
jmess = '{{"name":{0}}}'.format(len(out))
# parse x:
#y = json.loads(jmess)
return func.HttpResponse(str(len(out)))
import re
def remove_html_tags(raw_html):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', raw_html)
return cleantext
逻辑应用程序设计看起来像
Logic Apps designer capture
与捕获图像一样,我想知道如何在逻辑应用程序设计器中检查 http 触发函数应用程序的 return 值。在附加代码中,return 值类型只是字符串,即电子邮件正文的长度。
(另一个 JSON 版本 return 值不起作用。-- Python 代码中的 jmess 变量)
您没有详细说明您面临的确切问题是什么,或者错误是什么以及在哪里。
仅从您的问题来看,您的条件检查似乎应该如下所示。
int(outputs('TestHttpTrigger'))
int 在检查条件之前将字符串响应转换为整数。
最后我自己找到了答案。
- 我认为触发函数的return值只是字符串(或整数)。实际上 return 值是 JSON 形式。
- 在撰写本文时 post,我修改了 return 语句。
return func.HttpResponse(str(len(out)), mimetype='application/x-www-form-urlencoded')
- 并且在逻辑应用程序设计器中,我使用这个表达式来检查电子邮件的大小 body,
int(actionOutputs('TestHttpTrigger')['body']['$formdata'][0]['key'])
Logic Apps 日志显示了我使用该表达式的原因
{
“状态码”:200,
“headers”:{
"Transfer-Encoding": "分块",
"Request-Context": "appId=cid-v1:f4f8c55f-e9e7-4f3a-8d3a-a3873d0ee143",
“日期”:“2021 年 12 月 6 日星期一 03:45:39 GMT”,
“服务器”:“红隼”,
"Content-Type": "application/x-www-form-urlencoded",
“Content-Length”:“1”
},
"body": {
"$content-type": "application/x-www-form-urlencoded",
"$content": "OA==",
"$formdata":[
{
"键": "8",
“价值”: ””
}
]
}
}
谢谢@Anupam Chand。
我的工作值得 Azure 逻辑应用程序只是失败。
- 收到电子邮件后,
- 检查电子邮件正文的大小并删除 HTML 标签
- 如果邮件正文大小小于10,要发送警告邮件(内容太短)。
第 1 步没问题,因为 MS 文档中有类似案例。 对于第2步,我设计了http trigger app函数如下,
import logging
import azure.functions as func
import json
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
logging.info(req.get_body())
#message = req.get_body().decode()
mess = req.get_body().decode()
message = str(mess)
message = message.replace("\r\n", " ")
####
out = remove_html_tags(message)
logging.info(out)
###
# some JSON:
jmess = '{{"name":{0}}}'.format(len(out))
# parse x:
#y = json.loads(jmess)
return func.HttpResponse(str(len(out)))
import re
def remove_html_tags(raw_html):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', raw_html)
return cleantext
逻辑应用程序设计看起来像 Logic Apps designer capture
与捕获图像一样,我想知道如何在逻辑应用程序设计器中检查 http 触发函数应用程序的 return 值。在附加代码中,return 值类型只是字符串,即电子邮件正文的长度。 (另一个 JSON 版本 return 值不起作用。-- Python 代码中的 jmess 变量)
您没有详细说明您面临的确切问题是什么,或者错误是什么以及在哪里。
仅从您的问题来看,您的条件检查似乎应该如下所示。
int(outputs('TestHttpTrigger'))
int 在检查条件之前将字符串响应转换为整数。
最后我自己找到了答案。
- 我认为触发函数的return值只是字符串(或整数)。实际上 return 值是 JSON 形式。
- 在撰写本文时 post,我修改了 return 语句。
return func.HttpResponse(str(len(out)), mimetype='application/x-www-form-urlencoded')
- 并且在逻辑应用程序设计器中,我使用这个表达式来检查电子邮件的大小 body,
int(actionOutputs('TestHttpTrigger')['body']['$formdata'][0]['key'])
Logic Apps 日志显示了我使用该表达式的原因
{ “状态码”:200, “headers”:{ "Transfer-Encoding": "分块", "Request-Context": "appId=cid-v1:f4f8c55f-e9e7-4f3a-8d3a-a3873d0ee143", “日期”:“2021 年 12 月 6 日星期一 03:45:39 GMT”, “服务器”:“红隼”, "Content-Type": "application/x-www-form-urlencoded", “Content-Length”:“1” }, "body": { "$content-type": "application/x-www-form-urlencoded", "$content": "OA==", "$formdata":[ { "键": "8", “价值”: ”” } ] } }
谢谢@Anupam Chand。