真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何用Serverless實(shí)現(xiàn)生活智能化

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何用Serverless實(shí)現(xiàn)生活智能化,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、大興安嶺網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為大興安嶺等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

通過定時觸發(fā)器,可以簡單快速地定制一個企業(yè)微信機(jī)器人。我們可以用它來實(shí)現(xiàn)喝水、吃飯?zhí)嵝训刃」δ?,還能實(shí)現(xiàn)定時推送新聞、天氣,甚至是監(jiān)控告警的小功能。

使用企業(yè)微信機(jī)器人

在企業(yè)微信中,選擇添加機(jī)器人:

如何用Serverless實(shí)現(xiàn)生活智能化

之后,我們可以根據(jù)文檔進(jìn)行企業(yè)微信機(jī)器人的基礎(chǔ)功能定制:

以下是用 curl 工具往群組推送文本消息的示例(注意要將 url 替換成機(jī)器人的 webhook 地址,content 必須是 utf8 編碼):

curl '企業(yè)微信機(jī)器人地址' 
   -H 'Content-Type: application/json' 
   -d '
   {
        "msgtype": "text",
        "text": {
            "content": "hello world"
        }
   }'

通過 Python 語言實(shí)現(xiàn):

url = ""
data = {
    "msgtype": "markdown",
    "markdown": {
        "content": "hello world",
    }
}
data = json.dumps(data).encode("utf-8")
req_attr = urllib.request.Request(url, data)
resp_attr = urllib.request.urlopen(req_attr)
return_msg = resp_attr.read().decode("utf-8")

此時,我們可以通過 Serverless Framework 部署一個機(jī)器人的基本功能,并且設(shè)置好 API 網(wǎng)關(guān)觸發(fā)器:

index.py 文件如下:

import os
import json
import urllib.request

def main_handler(event, context):
    url = os.environ.get("url")
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": "hello world",
        }
    }
    data = json.dumps(data).encode("utf-8")
    req_attr = urllib.request.Request(url, data)
    resp_attr = urllib.request.urlopen(req_attr)
    return resp_attr.read().decode("utf-8")

serverless.yaml 文件如下:

MyRobot_Base:
  component: '@serverless/tencent-scf'
  inputs:
    name: MyRobot_Base
    runtime: Python3.6
    timeout: 3
    codeUri: ./base_robot
    description: 機(jī)器人推送接口
    region: ap-guangzhou
    environment:
      variables:
        url: webhook地址
    handler: index.main_handler
    memorySize: 64
    tags:
      app: myrobot
    events:
      - apigw:
          name: MyRobot
          parameters:
            protocols:
              - http
              - https
            description: 機(jī)器人推送接口
            environment: release
            endpoints:
              - path: /push
                method: ANY

部署成功之后,可以看到命令行中輸出的地址:

如何用Serverless實(shí)現(xiàn)生活智能化

在瀏覽器中打開,可以看到企業(yè)微信機(jī)器人已經(jīng)被觸發(fā)了:

如何用Serverless實(shí)現(xiàn)生活智能化

以上就是一個簡單的 hello world 功能。接下來,好戲開始!

我們對這個基礎(chǔ)函數(shù)進(jìn)行進(jìn)一步的改造:

import os
import json
import urllib.request

def main_handler(event, context):
    url = os.environ.get("url")
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": event['body'],
        }
    }
    data = json.dumps(data).encode("utf-8")
    req_attr = urllib.request.Request(url, data)
    resp_attr = urllib.request.urlopen(req_attr)
    return resp_attr.read().decode("utf-8")

通過將 data 中的 content 字段更改為 event['body'] 可以讓其他模塊請求該接口,實(shí)現(xiàn)機(jī)器人推送功能,當(dāng)然這個基礎(chǔ)函數(shù)我們還可以進(jìn)行完善,不僅僅是 markdown 格式,封裝更多支持的格式:

如何用Serverless實(shí)現(xiàn)生活智能化

機(jī)器人功能拓展

提醒喝水/吃飯功能

通過定時觸發(fā)器,訪問云函數(shù),可以實(shí)現(xiàn)該功能。

例如 index.py 代碼:

import os
import json
import urllib.request

def main_handler(event, context):
    url = os.environ.get("url")
    data = "每天都要多喝水哦,不要忘記補(bǔ)充水分".encode("utf-8")
    req_attr = urllib.request.Request(url, data)
    resp_attr = urllib.request.urlopen(req_attr)
    return resp_attr.read().decode("utf-8")

serverless.yaml文件:

MyRobot_Water:
  component: '@serverless/tencent-scf'
  inputs:
    name: MyRobot_Water
    runtime: Python3.6
    timeout: 3
    codeUri: ./water
    description: 提醒喝水的機(jī)器人
    region: ap-guangzhou
    environment:
      variables:
        url: https://service-lf3ug84s-1256773370.gz.apigw.tencentcs.com/release/push
    handler: index.main_handler
    memorySize: 64
    tags:
      app: myrobot
    events:
      - timer:
          name: timer
          parameters:
            cronExpression: '0 */30 9-17 * * * *'
            enable: true

這個函數(shù)就是每天上午 9 點(diǎn)到下午 5 點(diǎn),每 30 分鐘提醒喝一次水。

天氣預(yù)報/當(dāng)?shù)匦侣劰δ?/h4>

想要實(shí)現(xiàn)天氣預(yù)報/新聞播報的功能,我們可以通過已有的新聞接口來實(shí)現(xiàn),以騰訊云的云市場為例,尋找一個新聞類 API 接口:

如何用Serverless實(shí)現(xiàn)生活智能化

根據(jù) API 文檔,可以看到請求地址是:https://service-aqvnjmiq-1257101137.gz.apigw.tencentcs.com/release/news/search

Get 方法可以攜帶一個參數(shù):keyword,作為目標(biāo)的關(guān)鍵詞,編寫代碼:

import ssl, hmac, base64, hashlib, os, json
from datetime import datetime as pydatetime
from urllib.parse import urlencode
from urllib.request import Request, urlopen


def main_handler(event, context):
    source = "market"

    datetime = pydatetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
    signStr = "x-date: %snx-source: %s" % (datetime, source)
    sign = base64.b64encode(hmac.new(os.environ.get('secretKey').encode('utf-8'), signStr.encode('utf-8'), hashlib.sha1).digest())
    auth = 'hmac id="%s", algorithm="hmac-sha1", headers="x-date x-source", signature="%s"' % (os.environ.get("secretId"), sign.decode('utf-8'))

    headers = {
        'X-Source': source,
        'X-Date': datetime,
        'Authorization': auth,
    }
    queryParams = {'keyword': '科技新聞'}
    url = 'https://service-aqvnjmiq-1257101137.gz.apigw.tencentcs.com/release/news/search'
    if len(queryParams.keys()) > 0:
        url = url + '?' + urlencode(queryParams)

    content = ""
    for eve in json.loads(urlopen(Request(url, headers=headers)).read().decode("utf-8"))["result"]["list"][0:5]:
        content = content + "* [%s](%s) n"%(eve['title'], eve['url'])

    if content:
        urlopen(Request(os.environ.get('url'), content.encode("utf-8")))

serverless.yaml 文件:

MyRobot_News:
  component: '@serverless/tencent-scf'
  inputs:
    name: MyRobot_News
    runtime: Python3.6
    timeout: 3
    codeUri: ./news
    description: 新聞推送
    region: ap-guangzhou
    environment:
      variables:
        url: https://service-lf3ug84s-1256773370.gz.apigw.tencentcs.com/release/push
        secretId: 云市場密鑰信息
        secretKey: 云市場密鑰信息
    handler: index.main_handler
    memorySize: 64
    tags:
      app: myrobot
    events:
      - timer:
          name: timer
          parameters:
            cronExpression: '0 0 */8 * * * *'
            enable: true

運(yùn)行效果如下,每天早晨 8 點(diǎn)為我們推送當(dāng)日科技新聞:

如何用Serverless實(shí)現(xiàn)生活智能化

監(jiān)控告警功能

我們還可以賦予企業(yè)微信機(jī)器人監(jiān)控告警的能力:

index.py 文件:

import os
import urllib.request

def getStatusCode(url):
    return urllib.request.urlopen(url).getcode()

def main_handler(event, context):
    url = "http://www.anycodes.cn"
    if getStatusCode(url) == 200:
        print("您的網(wǎng)站%s可以訪問!" % (url))
    else:
        urllib.request.urlopen(urllib.request.Request(os.environ.get('url'), ("您的網(wǎng)站%s 不可以訪問!" % (url)).encode("utf-8")))
    return None

serverless.yaml 文件:

MyRobot_Monitor:
  component: '@serverless/tencent-scf'
  inputs:
    name: MyRobot_Monitor
    runtime: Python3.6
    timeout: 3
    codeUri: ./monitor
    description: 網(wǎng)站監(jiān)控
    region: ap-guangzhou
    environment:
      variables:
        url: https://service-lf3ug84s-1256773370.gz.apigw.tencentcs.com/release/push
    handler: index.main_handler
    memorySize: 64
    tags:
      app: myrobot
    events:
      - timer:
          name: timer
          parameters:
            cronExpression: '0 */30 * * * * *'
            enable: true

部署完成后,網(wǎng)站的監(jiān)控腳本就已經(jīng)啟動,每 30 分鐘檢查一次網(wǎng)站是否可用。如果不可用,則會發(fā)送告警:

如何用Serverless實(shí)現(xiàn)生活智能化

思路發(fā)散

企業(yè)微信機(jī)器人可以通過 Serverless 架構(gòu)被賦予更多更有趣的功能,那么還有哪些產(chǎn)品可以和 Serverless 架構(gòu)相結(jié)合,變得更有趣呢?

隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,IoT 技術(shù)也逐漸走進(jìn)了千家萬戶,無論是掃地機(jī)器人、智能窗簾等智能家居,還是智能音箱等娛樂設(shè)施,IoT 技術(shù)都變得可見可及。

小愛同學(xué),也能通過 Serverless 架構(gòu),快速開發(fā)出專屬新功能。

首先我們?nèi)ァ感弁瑢W(xué)」的開放平臺注冊賬號,并且提交認(rèn)證:

如何用Serverless實(shí)現(xiàn)生活智能化

接下來對小愛同學(xué)的定制化功能進(jìn)行研究。如圖所示,在開發(fā)文檔中,我們可以看到小愛同學(xué)開發(fā)者平臺為我們提供的能力信息,同樣我們也可以查看到 request 以及 response 的詳細(xì)信息:

如何用Serverless實(shí)現(xiàn)生活智能化

繼續(xù)進(jìn)行項(xiàng)目設(shè)計。本文的目標(biāo)是通過對小愛同學(xué)說出「進(jìn)入云+社區(qū)」等關(guān)鍵詞,為用戶返回騰訊云+社區(qū)的最新熱門文章的題目和簡介。

整個流程如圖所示:

如何用Serverless實(shí)現(xiàn)生活智能化

函數(shù)代碼編寫:

# -*- coding: utf8 -*-
import json
import logging
import urllib.request
import urllib.parse

logging.basicConfig(level=logging.NOTSET)


def main_handler(event, context):
    host = "https://cloud.tencent.com/"
    path = "developer/services/ajax/column/article?action=FetchColumnHomeArticleList"
    json_data = {
        "action": "FetchColumnHomeArticleList",
        "payload": {
            "pageNumber": 1,
            "pageSize": 20,
            "version": 1
        }
    }
    data = json.dumps(json_data).encode("utf-8")
    request_attr = urllib.request.Request(url=host + path, data=data)
    response_attr = urllib.request.urlopen(request_attr).read().decode("utf-8")
    json_resp = json.loads(response_attr)
    logging.debug(json_resp)
    temp_str = "文章題目為%s,主要內(nèi)容是%s"
    list_data = json_resp["data"]["list"][0:5]
    art_list = [temp_str % (eve["title"], eve["abstract"]) for eve in list_data]
    news_str = '''今日騰訊云加社區(qū)熱門文章如下:%s''' % ("、".join(art_list))
    logging.debug(news_str)

    xiaoai_response = {"version": "1.0",
                       "response": {
                           "open_mic": False,
                           "to_speak": {
                               "type": 0,
                               "text": news_str
                           }
                       },
                       "is_session_end": False
                       }
    return xiaoai_response

完成之后,使用 Serverless Framework 進(jìn)行部署,綁定 API 網(wǎng)關(guān)觸發(fā)器,通過請求地址可以看到測試結(jié)果:

如何用Serverless實(shí)現(xiàn)生活智能化

可以看到,我們已經(jīng)獲得到目標(biāo)數(shù)據(jù)。此時,我們在小愛同學(xué)官網(wǎng),創(chuàng)建技能開發(fā),在填寫好和保存好基本信息之后,選擇配置服務(wù),填寫 HTTPS 中的測試化地址:

如何用Serverless實(shí)現(xiàn)生活智能化

配置完成之后,開始測試,如下圖所示,可以看到,當(dāng)我們輸入預(yù)定的命令「打開云加社區(qū)」,系統(tǒng)會正確回取到結(jié)果信息,并且給我們返回:

如何用Serverless實(shí)現(xiàn)生活智能化

我們通過 Serverless 架構(gòu),成功地為「小愛同學(xué)」開發(fā)了一項(xiàng)新功能,我們還可以將這個新功能就拿去發(fā)布和上線!

上述就是小編為大家分享的如何用Serverless實(shí)現(xiàn)生活智能化了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享文章:如何用Serverless實(shí)現(xiàn)生活智能化
本文URL:http://weahome.cn/article/ijcooi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部