{"componentChunkName":"component---src-templates-best-practice-detail-tsx","path":"/best-practice/2020-02-06-serverless-work-weixin","result":{"data":{"currentBlog":{"id":"3f27165c-9176-5e1d-a427-9ffc801d5f2b","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/202026/1580962859953-probider.png","authors":["Tabor"],"categories":["best-practice"],"date":"2020-02-06T00:00:00.000Z","title":"基于 Serverless + 企业微信打造疫情监控小助手","description":"使用 Serverless 基本功能，配合企业微信打造 nCoV 疫情监控小助手","authorslink":["https://canmeng.net"],"translators":null,"translatorslink":null,"tags":["Serverless","企业微信"],"keywords":"Serverless 企业微信,Serverless 基本功能,nCoV 疫情监控小助手","outdated":true},"wordCount":{"words":100,"sentences":26,"paragraphs":26},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-02-06-serverless-work-weixin.md","fields":{"slug":"/best-practice/2020-02-06-serverless-work-weixin/","keywords":["php","python","serverless","云函数","font","echo","results","curl","info","color","responsesz"]},"html":"<p>最近的一些疫情信息很让人揪心，为了方便大家掌握疫情信息，在空闲之余做了一个关于 nCoV 的疫情监控小助手。主要的功能是通过企业微信的 WebHook 来推送疫情信息。这里将使用 Serverless 的整体代码思路和架构方式分享给大家。</p>\n<h2 id=\"实现效果\"><a href=\"#%E5%AE%9E%E7%8E%B0%E6%95%88%E6%9E%9C\" aria-label=\"实现效果 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>实现效果</h2>\n<p>我们想要实现的大致的效果是这样的：</p>\n<p><img src=\"https://img.serverlesscloud.cn/202026/1580963143544-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A120200206094038.png\"></p>\n<p>首先，我们需要解决的是数据来源问题，这里我们可以使用python爬虫来做这件事情，但是由于个人比较懒所以直接用的 <a href=\"https://github.com/BlankerL/DXY-2019-nCoV-Crawler\">2019-nCoV-Crawler</a>  ，这个项目已经集成了现有的API，所以我们直接调用即可。当然有能力的同学也可以自己部署Python，我这边是自己部署的，但是这不是本次的重点，就不再赘述。</p>\n<p>现在，我们有了数据，但是数据怎么打到服务器呢？又该如何触发？当然使用CVM也是可以的，但是似乎太笨拙，并且消耗量很大，需要自己搭好所有环境。所以，这里我们选用Serverless方式来部署。</p>\n<h2 id=\"核心逻辑\"><a href=\"#%E6%A0%B8%E5%BF%83%E9%80%BB%E8%BE%91\" aria-label=\"核心逻辑 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>核心逻辑</h2>\n<p>我们来看看整体业务的代码部分吧，毕竟这里是整个机器人的核心。我们来看代码（请求三次接口）：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"53068753190020800000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`<?php\nfunction main_handler(\\$event, \\$context) {\n// 广东省情况\n\\$curlsz = curl_init();\ncurl_setopt_array(\\$curlsz, array(\n  CURLOPT_URL => &quot;https://lab.isaaclin.cn/nCoV/api/area?latest=0&province=%E5%B9%BF%E4%B8%9C%E7%9C%81&quot;,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => &quot;&quot;,\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 3000,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => &quot;GET&quot;,\n  CURLOPT_HTTPHEADER => array(\n    &quot;Accept: */*&quot;,\n    &quot;Cache-Control: no-cache&quot;,\n    &quot;Connection: keep-alive&quot;,\n    &quot;Host: lab.isaaclin.cn&quot;,\n    &quot;Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e&quot;,\n    &quot;User-Agent: PostmanRuntime/7.15.0&quot;,\n    &quot;accept-encoding: gzip, deflate&quot;,\n    &quot;cache-control: no-cache&quot;\n  ),\n));\n\n\\$responsesz = curl_exec(\\$curlsz);\n\\$echo_responsesz = json_decode(\\$responsesz, true);\n\\$err = curl_error(\\$curlsz);\ncurl_close(\\$curlsz);\n\n// 湖北省情况\n\\$curlhb = curl_init();\ncurl_setopt_array(\\$curlhb, array(\n  CURLOPT_URL => &quot;https://lab.isaaclin.cn/nCoV/api/area?latest=0&province=%E6%B9%96%E5%8C%97%E7%9C%81&quot;,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => &quot;&quot;,\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 3000,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => &quot;GET&quot;,\n  CURLOPT_HTTPHEADER => array(\n    &quot;Accept: */*&quot;,\n    &quot;Cache-Control: no-cache&quot;,\n    &quot;Connection: keep-alive&quot;,\n    &quot;Host: lab.isaaclin.cn&quot;,\n    &quot;Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e&quot;,\n    &quot;User-Agent: PostmanRuntime/7.15.0&quot;,\n    &quot;accept-encoding: gzip, deflate&quot;,\n    &quot;cache-control: no-cache&quot;\n  ),\n));\n\n\\$responsehb = curl_exec(\\$curlhb);\n\\$echo_responsehb = json_decode(\\$responsehb, true);\n\\$err = curl_error(\\$curlhb);\ncurl_close(\\$curlhb);\n\n// 全国总体情况\n\\$curlall = curl_init();\ncurl_setopt_array(\\$curlall, array(\n  CURLOPT_URL => &quot;https://lab.isaaclin.cn/nCoV/api/overall&quot;,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => &quot;&quot;,\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 3000,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => &quot;GET&quot;,\n  CURLOPT_HTTPHEADER => array(\n    &quot;Accept: */*&quot;,\n    &quot;Cache-Control: no-cache&quot;,\n    &quot;Connection: keep-alive&quot;,\n    &quot;Host: lab.isaaclin.cn&quot;,\n    &quot;Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e&quot;,\n    &quot;User-Agent: PostmanRuntime/7.15.0&quot;,\n    &quot;accept-encoding: gzip, deflate&quot;,\n    &quot;cache-control: no-cache&quot;\n  ),\n));\n\n\\$responseall = curl_exec(\\$curlall);\n\\$echo_responseall = json_decode(\\$responseall, true);\n\\$err = curl_error(\\$curlall);\ncurl_close(\\$curlall);\n\n//判断是否为深圳地域（这里逻辑写的比较简单，但是够用了）\nif (\\$echo_responsesz['results'][0]['cities'][0]['cityName'] == '深圳') {\n  \\$echo_responseszqz = \\$echo_responsesz['results'][0]['cities'][0]['confirmedCount'];\n  \\$echo_responseszys = \\$echo_responsesz['results'][0]['cities'][0]['suspectedCount'];\n  \\$echo_responseszzy = \\$echo_responsesz['results'][0]['cities'][0]['curedCount'];\n  \\$echo_responseszsw = \\$echo_responsesz['results'][0]['cities'][0]['deadCount'];\n} else {\n  \\$echo_responseszqz = \\$echo_responsesz['results'][0]['cities'][1]['confirmedCount'];\n  \\$echo_responseszys = \\$echo_responsesz['results'][0]['cities'][1]['suspectedCount'];\n  \\$echo_responseszzy = \\$echo_responsesz['results'][0]['cities'][1]['curedCount'];\n  \\$echo_responseszsw = \\$echo_responsesz['results'][0]['cities'][1]['deadCount'];\n}\n\nif (\\$err) {\n  echo &quot;cURL Error #:&quot; . \\$err;\n} else {\n//疫情监控告警机器人\n\\$sc = \\$sc=&quot; **2019-nCoV 疫情信息同步:** \\n\n> 全国疫情:\n> 确诊人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['confirmedCount'].&quot;</font>,疑似感染人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['suspectedCount'].&quot;</font>,治愈人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['curedCount'].&quot;</font>,死亡人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['deadCount'].&quot;</font>\\n\n> 广东省:\n> 确诊人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsesz['results'][0]['confirmedCount'].&quot;</font>,疑似感染人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsesz['results'][0]['suspectedCount'].&quot;</font>,治愈人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsesz['results'][0]['curedCount'].&quot;</font>,死亡人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsesz['results'][0]['deadCount'].&quot;</font>\\n\n> 湖北省:\n> 确诊人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsehb['results'][0]['confirmedCount'].&quot;</font>,疑似感染人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsehb['results'][0]['suspectedCount'].&quot;</font>,治愈人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsehb['results'][0]['curedCount'].&quot;</font>,死亡人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responsehb['results'][0]['deadCount'].&quot;</font>\\n\n> 深圳市:\n> 确诊人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseszqz.&quot;</font>,疑似感染人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseszys.&quot;</font>,治愈人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseszzy.&quot;</font>,死亡人数<font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseszsw.&quot;</font>\\n\n\n> <font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['note1'].&quot;</font>\n> <font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['note2'].&quot;</font>\n> <font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['note3'].&quot;</font>\n> <font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['remark1'].&quot;</font>\n> <font color=\\&quot;info\\&quot;>&quot;.\\$echo_responseall['results'][0]['remark2'].&quot;</font>\n> <font color=\\&quot;info\\&quot;> 信息出处:&quot;.\\$echo_responseall['results'][0]['generalRemark'].&quot;</font> \\n\n>[更多数据请查看](https://news.qq.com/zt2020/page/feiyan.htm) \\n\n&quot;;\n\\$post = array('msgtype' => 'markdown', 'markdown' => array('content' => \\$sc));\n\\$curl = curl_init();\ncurl_setopt_array(\\$curl, array(\n  CURLOPT_URL => &quot;https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=&quot;,  //这里的地址填写为企业微信的HOOK路径，https://work.weixin.qq.com/api/doc/90000/90136/91770\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_ENCODING => &quot;&quot;,\n  CURLOPT_MAXREDIRS => 10,\n  CURLOPT_TIMEOUT => 10,\n  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n  CURLOPT_CUSTOMREQUEST => &quot;POST&quot;,\n  CURLOPT_POSTFIELDS => json_encode(\\$post,JSON_UNESCAPED_UNICODE),\n  CURLOPT_HTTPHEADER => array(\n    &quot;Cache-Control: no-cache&quot;,\n    &quot;Postman-Token: ab32082b-ce64-4832-b51f-8f2f1b3e98ef&quot;\n  ),\n));\n\n\\$response = curl_exec(\\$curl);\n\\$err = curl_error(\\$curl);\n\ncurl_close(\\$curl);\n\nreturn &quot;运行成功&quot;;\n}\n\n}\n\n?>`, `53068753190020800000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">main_handler</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$event</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$context</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"token comment\">// 广东省情况</span>\n<span class=\"token variable\">$curlsz</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_setopt_array</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlsz</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n  <span class=\"token constant\">CURLOPT_URL</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"https://lab.isaaclin.cn/nCoV/api/area?latest=0&amp;province=%E5%B9%BF%E4%B8%9C%E7%9C%81\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_ENCODING</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_MAXREDIRS</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_TIMEOUT</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTP_VERSION</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token constant\">CURL_HTTP_VERSION_1_1</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_CUSTOMREQUEST</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"GET\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTPHEADER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n    <span class=\"token double-quoted-string string\">\"Accept: */*\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Cache-Control: no-cache\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Connection: keep-alive\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Host: lab.isaaclin.cn\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"User-Agent: PostmanRuntime/7.15.0\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"accept-encoding: gzip, deflate\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"cache-control: no-cache\"</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token variable\">$responsesz</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlsz</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$echo_responsesz</span> <span class=\"token operator\">=</span> <span class=\"token function\">json_decode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$responsesz</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$err</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_error</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlsz</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlsz</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 湖北省情况</span>\n<span class=\"token variable\">$curlhb</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_setopt_array</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlhb</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n  <span class=\"token constant\">CURLOPT_URL</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"https://lab.isaaclin.cn/nCoV/api/area?latest=0&amp;province=%E6%B9%96%E5%8C%97%E7%9C%81\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_ENCODING</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_MAXREDIRS</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_TIMEOUT</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTP_VERSION</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token constant\">CURL_HTTP_VERSION_1_1</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_CUSTOMREQUEST</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"GET\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTPHEADER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n    <span class=\"token double-quoted-string string\">\"Accept: */*\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Cache-Control: no-cache\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Connection: keep-alive\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Host: lab.isaaclin.cn\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"User-Agent: PostmanRuntime/7.15.0\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"accept-encoding: gzip, deflate\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"cache-control: no-cache\"</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token variable\">$responsehb</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlhb</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$echo_responsehb</span> <span class=\"token operator\">=</span> <span class=\"token function\">json_decode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$responsehb</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$err</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_error</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlhb</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlhb</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 全国总体情况</span>\n<span class=\"token variable\">$curlall</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_setopt_array</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlall</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n  <span class=\"token constant\">CURLOPT_URL</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"https://lab.isaaclin.cn/nCoV/api/overall\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_ENCODING</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_MAXREDIRS</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_TIMEOUT</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTP_VERSION</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token constant\">CURL_HTTP_VERSION_1_1</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_CUSTOMREQUEST</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"GET\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTPHEADER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n    <span class=\"token double-quoted-string string\">\"Accept: */*\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Cache-Control: no-cache\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Connection: keep-alive\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Host: lab.isaaclin.cn\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"User-Agent: PostmanRuntime/7.15.0\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"accept-encoding: gzip, deflate\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"cache-control: no-cache\"</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token variable\">$responseall</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlall</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$echo_responseall</span> <span class=\"token operator\">=</span> <span class=\"token function\">json_decode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$responseall</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$err</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_error</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlall</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curlall</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">//判断是否为深圳地域（这里逻辑写的比较简单，但是够用了）</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cityName'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token single-quoted-string string\">'深圳'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token variable\">$echo_responseszqz</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'confirmedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$echo_responseszys</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'suspectedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$echo_responseszzy</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'curedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$echo_responseszsw</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'deadCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token variable\">$echo_responseszqz</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'confirmedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$echo_responseszys</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'suspectedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$echo_responseszzy</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'curedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$echo_responseszsw</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'cities'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'deadCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$err</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">echo</span> <span class=\"token double-quoted-string string\">\"cURL Error #:\"</span> <span class=\"token punctuation\">.</span> <span class=\"token variable\">$err</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n<span class=\"token comment\">//疫情监控告警机器人</span>\n<span class=\"token variable\">$sc</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$sc</span><span class=\"token operator\">=</span><span class=\"token double-quoted-string string\">\" **2019-nCoV 疫情信息同步:** \\n\n> 全国疫情:\n> 确诊人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'confirmedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,疑似感染人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'suspectedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,治愈人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'curedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,死亡人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'deadCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\\n\n> 广东省:\n> 确诊人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'confirmedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,疑似感染人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'suspectedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,治愈人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'curedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,死亡人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsesz</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'deadCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\\n\n> 湖北省:\n> 确诊人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsehb</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'confirmedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,疑似感染人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsehb</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'suspectedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,治愈人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsehb</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'curedCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,死亡人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responsehb</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'deadCount'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\\n\n> 深圳市:\n> 确诊人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseszqz</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,疑似感染人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseszys</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,治愈人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseszzy</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>,死亡人数&lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseszsw</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\\n\n\n> &lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'note1'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\n> &lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'note2'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\n> &lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'note3'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\n> &lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'remark1'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\n> &lt;font color=\\\"info\\\">\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'remark2'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font>\n> &lt;font color=\\\"info\\\"> 信息出处:\"</span><span class=\"token punctuation\">.</span><span class=\"token variable\">$echo_responseall</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'results'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'generalRemark'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token double-quoted-string string\">\"&lt;/font> \\n\n>[更多数据请查看](https://news.qq.com/zt2020/page/feiyan.htm) \\n\n\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$post</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'msgtype'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'markdown'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'markdown'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'content'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$sc</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$curl</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">curl_setopt_array</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n  <span class=\"token constant\">CURLOPT_URL</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=\"</span><span class=\"token punctuation\">,</span>  <span class=\"token comment\">//这里的地址填写为企业微信的HOOK路径，https://work.weixin.qq.com/api/doc/90000/90136/91770</span>\n  <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_ENCODING</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_MAXREDIRS</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_TIMEOUT</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTP_VERSION</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token constant\">CURL_HTTP_VERSION_1_1</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_CUSTOMREQUEST</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"POST\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_POSTFIELDS</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token function\">json_encode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$post</span><span class=\"token punctuation\">,</span><span class=\"token constant\">JSON_UNESCAPED_UNICODE</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  <span class=\"token constant\">CURLOPT_HTTPHEADER</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n    <span class=\"token double-quoted-string string\">\"Cache-Control: no-cache\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token double-quoted-string string\">\"Postman-Token: ab32082b-ce64-4832-b51f-8f2f1b3e98ef\"</span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token variable\">$response</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$err</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_error</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">return</span> <span class=\"token double-quoted-string string\">\"运行成功\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token delimiter important\">?></span></span></code></pre></div>\n<p>是不是很简单呢？请求数据，发送数据。</p>\n<p>那么我们接下了重点看下如何将我们的业务代码上传到云端呢？\n这里的云端我用的是腾讯云Serverless服务 <a href=\"https://cloud.tencent.com/product/scf\">SCF云函数</a> 。整个部署，使用过程都是免费的，对于开发者来讲小项目使用的话免费额度是完全够用的。无需担心额外付费。</p>\n<p>Serverless部署，选用的是比较流行的 Serverless Framework，使用和部署也是完全免费的，那么下面我就来介绍下具体的部署过程吧。</p>\n<h2 id=\"安装-serverless-框架\"><a href=\"#%E5%AE%89%E8%A3%85-serverless-%E6%A1%86%E6%9E%B6\" aria-label=\"安装 serverless 框架 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>安装 Serverless 框架</h2>\n<p>首先，第一步，我们来安装一个Serverless framework的开发框架：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"4346950227973312000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`\\$ npm install -g serverless`, `4346950227973312000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">$ npm install <span class=\"token operator\">-</span>g serverless</code></pre></div>\n<p>然后，我们创建一个函数目录：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"40708615002859870000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`\\$ mkdir nCov-function\n\\$ cd nCov-function`, `40708615002859870000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">$ mkdir nCov<span class=\"token operator\">-</span><span class=\"token keyword\">function</span>\n$ cd nCov<span class=\"token operator\">-</span><span class=\"token keyword\">function</span></code></pre></div>\n<p>相关函数目录的内容如下：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"92370444691161830000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`|- code\n  |- index.php  // 这里就是上面的业务代码存放位置\n|- serverless.yml //serverless 配置文件`, `92370444691161830000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token operator\">|</span><span class=\"token operator\">-</span> code\n  <span class=\"token operator\">|</span><span class=\"token operator\">-</span> index<span class=\"token punctuation\">.</span>php  <span class=\"token comment\">// 这里就是上面的业务代码存放位置</span>\n<span class=\"token operator\">|</span><span class=\"token operator\">-</span> serverless<span class=\"token punctuation\">.</span>yml <span class=\"token comment\">//serverless 配置文件</span></code></pre></div>\n<h2 id=\"配置yml文件\"><a href=\"#%E9%85%8D%E7%BD%AEyml%E6%96%87%E4%BB%B6\" aria-label=\"配置yml文件 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>配置Yml文件</h2>\n<p>接下来，是我们的重头戏，配置函数yml文件：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"78991386583378590000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`# serverless.yml\nmyFunction:\n  component: &quot;@serverless/tencent-scf&quot;  //引用tencent-scf component\n  inputs:\n    name: nCoVFunction   //函数名称\n    enableRoleAuth: true\n    codeUri: ./code  //代码本地存放位置\n    handler: index.main_handler\n    runtime: Php5\n    region: ap-shanghai //函数运行地域\n    description: My Serverless nCoV Function.\n    memorySize: 128  //运行内存\n    timeout: 20  //超时时间\n    exclude:\n      - .gitignore\n      - .git/**\n      - node_modules/**\n      - .serverless\n      - .env\n    include:\n      - ./nCoVFunction.zip\n    environment:\n      variables:\n        TEST: vale\n    vpcConfig:\n      subnetId: ''\n      vpcId: ''\n    events:\n      - timer:  // 定时触发器\n          name: timer\n          parameters:\n            cronExpression: '0 0 10,21 * * * *'  //明天早上10点，晚上21点\n            enable: true`, `78991386583378590000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># serverless.yml</span>\n<span class=\"token key atrule\">myFunction</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">component</span><span class=\"token punctuation\">:</span> \"@serverless/tencent<span class=\"token punctuation\">-</span>scf\"  //引用tencent<span class=\"token punctuation\">-</span>scf component\n  <span class=\"token key atrule\">inputs</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> nCoVFunction   //函数名称\n    <span class=\"token key atrule\">enableRoleAuth</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n    <span class=\"token key atrule\">codeUri</span><span class=\"token punctuation\">:</span> ./code  //代码本地存放位置\n    <span class=\"token key atrule\">handler</span><span class=\"token punctuation\">:</span> index.main_handler\n    <span class=\"token key atrule\">runtime</span><span class=\"token punctuation\">:</span> Php5\n    <span class=\"token key atrule\">region</span><span class=\"token punctuation\">:</span> ap<span class=\"token punctuation\">-</span>shanghai //函数运行地域\n    <span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> My Serverless nCoV Function.\n    <span class=\"token key atrule\">memorySize</span><span class=\"token punctuation\">:</span> 128  //运行内存\n    <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 20  //超时时间\n    <span class=\"token key atrule\">exclude</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> .gitignore\n      <span class=\"token punctuation\">-</span> .git/**\n      <span class=\"token punctuation\">-</span> node_modules/**\n      <span class=\"token punctuation\">-</span> .serverless\n      <span class=\"token punctuation\">-</span> .env\n    <span class=\"token key atrule\">include</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> ./nCoVFunction.zip\n    <span class=\"token key atrule\">environment</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">variables</span><span class=\"token punctuation\">:</span>\n        <span class=\"token key atrule\">TEST</span><span class=\"token punctuation\">:</span> vale\n    <span class=\"token key atrule\">vpcConfig</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">subnetId</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span>\n      <span class=\"token key atrule\">vpcId</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span>\n    <span class=\"token key atrule\">events</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">timer</span><span class=\"token punctuation\">:</span>  // 定时触发器\n          <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> timer\n          <span class=\"token key atrule\">parameters</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">cronExpression</span><span class=\"token punctuation\">:</span> '0 0 10<span class=\"token punctuation\">,</span>21 * * * *'  //明天早上10点，晚上21点\n            <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n<p>万事具备，我们就可以直接部署 SLS 了。</p>\n<h2 id=\"部署到云端\"><a href=\"#%E9%83%A8%E7%BD%B2%E5%88%B0%E4%BA%91%E7%AB%AF\" aria-label=\"部署到云端 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>部署到云端</h2>\n<p>通过sls命令（serverless的缩写）进行部署，并可以添加–debug参数查看部署过程中的信息：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"52998434272228790000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`taborchen\\$ sls --debug\n\n  DEBUG ─ Resolving the template's static variables.\n  DEBUG ─ Collecting components from the template.\n  DEBUG ─ Downloading any NPM components found in the template.\n  DEBUG ─ Analyzing the template's components dependencies.\n  DEBUG ─ Creating the template's components graph.\n  DEBUG ─ Syncing template state.\n  DEBUG ─ Executing the template's components graph.\n  DEBUG ─ Compressing function nCoVFunction file to /Users/taborchen/Desktop/工作/yiqing/.ser\nverless/nCoVFunction.zip.\n  DEBUG ─ Compressed function nCoVFunction file successful\n  DEBUG ─ Uploading service package to cos[sls-cloudfunction-ap-shanghai-code]. sls-cloudfunc\ntion-default-nCoVFunction-1580960644.zip\n  DEBUG ─ Uploaded package successful /Users/taborchen/Desktop/工作/yiqing/.serverless/nCoVFu\nnction.zip\n  DEBUG ─ Creating function nCoVFunction\n  DEBUG ─ Created function nCoVFunction successful\n  DEBUG ─ Setting tags for function nCoVFunction\n  DEBUG ─ Creating trigger for function nCoVFunction\n  DEBUG ─ Created timer trigger timer for function nCoVFunction success.\n  DEBUG ─ Deployed function nCoVFunction successful`, `52998434272228790000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">taborchen$ sls <span class=\"token operator\">--</span>debug\n\n  <span class=\"token constant\">DEBUG</span> ─ Resolving the template's <span class=\"token keyword\">static</span> variables<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Collecting components <span class=\"token keyword\">from</span> the template<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Downloading any <span class=\"token constant\">NPM</span> components found <span class=\"token keyword\">in</span> the template<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Analyzing the template's components dependencies<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Creating the template's components graph<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Syncing template state<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Executing the template's components graph<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Compressing <span class=\"token keyword\">function</span> nCoVFunction file to <span class=\"token operator\">/</span>Users<span class=\"token operator\">/</span>taborchen<span class=\"token operator\">/</span>Desktop<span class=\"token operator\">/</span>工作<span class=\"token operator\">/</span>yiqing<span class=\"token operator\">/</span><span class=\"token punctuation\">.</span>ser\nverless<span class=\"token operator\">/</span>nCoVFunction<span class=\"token punctuation\">.</span>zip<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Compressed <span class=\"token keyword\">function</span> nCoVFunction file successful\n  <span class=\"token constant\">DEBUG</span> ─ Uploading service <span class=\"token keyword\">package</span> to cos<span class=\"token punctuation\">[</span>sls<span class=\"token operator\">-</span>cloudfunction<span class=\"token operator\">-</span>ap<span class=\"token operator\">-</span>shanghai<span class=\"token operator\">-</span>code<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span> sls<span class=\"token operator\">-</span>cloudfunc\ntion<span class=\"token operator\">-</span><span class=\"token keyword\">default</span><span class=\"token operator\">-</span>nCoVFunction<span class=\"token operator\">-</span><span class=\"token number\">1580960644.</span>zip\n  <span class=\"token constant\">DEBUG</span> ─ Uploaded <span class=\"token keyword\">package</span> successful <span class=\"token operator\">/</span>Users<span class=\"token operator\">/</span>taborchen<span class=\"token operator\">/</span>Desktop<span class=\"token operator\">/</span>工作<span class=\"token operator\">/</span>yiqing<span class=\"token operator\">/</span><span class=\"token punctuation\">.</span>serverless<span class=\"token operator\">/</span>nCoVFu\nnction<span class=\"token punctuation\">.</span>zip\n  <span class=\"token constant\">DEBUG</span> ─ Creating <span class=\"token keyword\">function</span> nCoVFunction\n  <span class=\"token constant\">DEBUG</span> ─ Created <span class=\"token keyword\">function</span> nCoVFunction successful\n  <span class=\"token constant\">DEBUG</span> ─ Setting tags <span class=\"token keyword\">for</span> <span class=\"token keyword\">function</span> nCoVFunction\n  <span class=\"token constant\">DEBUG</span> ─ Creating trigger <span class=\"token keyword\">for</span> <span class=\"token keyword\">function</span> nCoVFunction\n  <span class=\"token constant\">DEBUG</span> ─ Created timer trigger timer <span class=\"token keyword\">for</span> <span class=\"token keyword\">function</span> nCoVFunction success<span class=\"token punctuation\">.</span>\n  <span class=\"token constant\">DEBUG</span> ─ Deployed <span class=\"token keyword\">function</span> nCoVFunction successful</code></pre></div>\n<p>运行结果如下：</p>\n<p><img src=\"https://img.serverlesscloud.cn/202026/1580963150682-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A120200206114514.png\"></p>\n<p>这样，我们就完成了一个 nCoV 的在线触发函数机器人～是不是很简单呢？快来开始动手吧～</p>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a></li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li><a href=\"/best-practice/2020-02-06-serverless-work-weixin/#%E5%AE%9E%E7%8E%B0%E6%95%88%E6%9E%9C\">实现效果</a></li>\n<li><a href=\"/best-practice/2020-02-06-serverless-work-weixin/#%E6%A0%B8%E5%BF%83%E9%80%BB%E8%BE%91\">核心逻辑</a></li>\n<li><a href=\"/best-practice/2020-02-06-serverless-work-weixin/#%E5%AE%89%E8%A3%85-serverless-%E6%A1%86%E6%9E%B6\">安装 Serverless 框架</a></li>\n<li><a href=\"/best-practice/2020-02-06-serverless-work-weixin/#%E9%85%8D%E7%BD%AEyml%E6%96%87%E4%BB%B6\">配置Yml文件</a></li>\n<li><a href=\"/best-practice/2020-02-06-serverless-work-weixin/#%E9%83%A8%E7%BD%B2%E5%88%B0%E4%BA%91%E7%AB%AF\">部署到云端</a></li>\n</ul>"},"previousBlog":{"id":"e4d496fa-1f43-52fe-97ed-a397afdf1f9c","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/20191226/1577362754931-egg.png","authors":["yugasun"],"categories":["best-practice"],"date":"2020-02-07T00:00:00.000Z","title":"Serverless + Egg.js 后台管理系统实战","description":"本文将介绍如何基于 Egg.js 和 Serverless 实现一个后台管理系统","authorslink":["https://github.com/yugasun"],"translators":null,"translatorslink":null,"tags":["Serverless","Egg.js"],"keywords":"Egg.js,Serverless后台管理,Serverless Egg.js","outdated":true},"wordCount":{"words":636,"sentences":119,"paragraphs":119},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-02-07-serverless-admin-system.md","fields":{"slug":"/best-practice/2020-02-07-serverless-admin-system/","keywords":["go","koa","serverless","spa","vue","vuejs","website","website 组件","无服务器","云函数","role","serverless","Egg"]}},"nextBlog":{"id":"d28c5060-2591-5220-b940-e0f73d022e76","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020219/1582115734254-VuePress_2_%E9%95%BF%E5%89%AF%E6%9C%AC.png","authors":["Aceyclee"],"categories":["best-practice"],"date":"2020-02-04T00:00:00.000Z","title":"基于 Serverless 的 VuePress 极简静态网站","description":"通过 Serverless Website 组件快速构建一个 VuePress 极简静态网站","authorslink":["https://www.zhihu.com/people/Aceyclee"],"translators":null,"translatorslink":null,"tags":["Serverless","VuePress"],"keywords":"VuePress,静态网站管理系统,VuePress 极简静态网站","outdated":true},"wordCount":{"words":150,"sentences":32,"paragraphs":31},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-02-04-vuepress-serverless.md","fields":{"slug":"/best-practice/2020-02-04-vuepress-serverless/","keywords":["nodejs","serverless","vue","vuejs","website","单页应用","无服务器","serverless","vuepress","Serverless","yml","VuePress","部署"]}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"3f27165c-9176-5e1d-a427-9ffc801d5f2b","previousBlogId":"e4d496fa-1f43-52fe-97ed-a397afdf1f9c","nextBlogId":"d28c5060-2591-5220-b940-e0f73d022e76"}}}