Bot Framework Composer에서 봇 개발 : 8 HTTP 요청 사용

15121 단어 ComposerBotFramework
지난번은 LUIS를 사용하여 엔티티를 얻고 사용하는 방법을 살펴 보았습니다. 이번에는 외부 서비스를 HTTP 요청으로 호출하는 방법을 살펴 보겠습니다.

HTTP 요청



Bot Framework Composer에는 HTTP 요청 작업이 있으므로 외부 서비스를 쉽게 호출할 수 있습니다.
이번은 Qiita.com의 API 을 이용하여 정보를 취득해 보겠습니다.

이번에는 특정 사용자의 최근 기사 3건 취하는 URL
htps : // 코 m/아피/v2/우세 rs/:우세 r_이 d/있어 ms? Page = 1 & Per_Page = 3
그리고 다음 형식으로 반환되는 결과를 사용합니다.
[
    {
        "rendered_body": "...",
        "coediting": false,
        "comments_count": 0,
        "created_at": "2020-03-27T17:34:01+09:00",
        "group": null,
        "id": "ba22b09ad587fa259e0a",
        "likes_count": 0,
        "private": false,
        "reactions_count": 0,
        "tags": [
            {
                "name": "Composer",
                "versions": []
            },
            {
                "name": "BotFramework",
                "versions": []
            }
        ],
        "title": "Bot Framework Composer でボット開発 : その 7 エンティティの取得",
        "updated_at": "2020-03-27T17:34:01+09:00",
        "url": "https://qiita.com/kenakamu/items/ba22b09ad587fa259e0a",
        "user": {
            "description": "",
            "facebook_id": "kenichiro.nakamura.5249",
            "followees_count": 5,
            "followers_count": 193,
            "github_login_name": "kenakamu",
            "id": "kenakamu",
            "items_count": 225,
            "linkedin_id": "kenakamu108",
            "location": "",
            "name": "",
            "organization": "Microsoft ",
            "permanent_id": 214116,
            "profile_image_url": "https://avatars2.githubusercontent.com/u/9940668?v=4",
            "team_only": false,
            "twitter_screen_name": "kenakamu108",
            "website_url": "http://github.com/kenakamu"
        },
        "page_views_count": null
    },
    {
        ...
    },
    {
        ...
    }
]

lg 함수



이번에는 결과를 회전 목마로 반환합니다. 이 때 lg (Language Generation) 함수를 몇 개 사용합니다.
또 사전에 정의되어 있는 함수가 제공되고 있어 샘플에서도 자주(잘) 사용하기 때문에, 어떤 일을 할 수 있는지 파악해 두면 편리합니다.

GitHub: 미리 정의된 함수

카드를 보내는 방법에 대해서는 공식 문서도 함께 참조하십시오.

기사 취득 대화 상자 추가



이제 Qiita API를 사용하여 기사 검색 대화 상자를 추가해 보겠습니다.

1. 새 대화 상자에서 GetArticles 대화 상자를 추가합니다.


2. "Text Input"액션 추가. Qiita 사용자 이름을 듣습니다.


3. 사용자 입력을 다음과 같이 설정. 유저명은 엔티티에서도 취득할 수 있도록 한다.


4. "Access external resources"에서 "Send an HTTP request"를 선택합니다.


5. Get 메서드를 지정하고 주소에 https://qiita.com/api/v2/users/${dialog.qiitauser}/items?page=1&per_page=3를 입력합니다.


6. 속성 창 하단의 Result Property 및 Response type을 설정합니다. 이 경우, 결과는 각각 이하의 패스로 액세스 가능. 바로 가기에 대한 자세한 내용은 이전 기사을 참조하십시오.
  • 상태 코드: dialog.response.statusCode 또는 $response.statusCode
  • 콘텐츠: dialog.response.content 또는 $response.content
  • 헤더: dialog.response.headers 또는 $response.headers



  • 7. If/Else 분기를 추가합니다. 조건에 $response.statusCode == 200 를 설정.


    8. "Send a respose"액션을 추가하고 -${ConvertToCards($response.content)} 를 지정합니다. 아직 함수가 없기 때문에 에러가 되지만 무시.


    9. 메뉴에서 "Bot Responses"를 선택합니다. GetArticles에 함수 추가.
  • ConvertToCards에서 Activity를 회전 목마로 정의
  • Attachments는 목록을 받기 때문에 foreach에서 HeroCard를 순차적으로 만듭니다.
  • 버튼은 인라인으로도 정의 할 수 있지만, 여기에서는 CardAction 함수로서 작성
  • # ConvertToCards(articles)
    [Activity
        Attachments = ${foreach(articles, article, Herocard(article))}
        AttachmentLayout = carousel
    ]
    
    # Herocard (article)
    [HeroCard
        title=${article.title}
        subtitle =  ${join(foreach(article.tags, article, article.name),',')}
        text = ${substring(article.body, 0, 300)}
        buttons=${Cardaction('openUrl', '記事を見る', article.url)}
    ]
    
    # Cardaction(type, title, value)
    [CardAction
        Type = ${if(type == null, 'imBack', type)}
        Title = ${title}
        Value = ${value}
        Text = ${title}
    ]
    

    10. 메인 대화 상자에서 트리거를 만듭니다. GetArticles 대화 상자의 시작 작업을 추가합니다.


    11. 봇을 다시 시작하고 에뮬레이터에서 확인.


    GET 이외의 처리 및 헤더 부여



    HTTP 요청 작업은 GET 외에도 다음 HTTP 메서드를 지원합니다.


    또 헤더도 자유자재입니다.


    당연히 메모리 객체를 이용한 동적 값을 지원하기 위해 대부분의 요구 사항이 충족됩니다.

    요약



    이번에는 HTTP 요청을 사용하는 방법을 살펴 보았습니다. 응답의 처리는 조금 익숙해져야 하지만, 많은 서비스가 같은 동작을 하기 때문에, 일단 사용법을 기억하면 나중에 괜찮습니다.

    다음에 작성한 봇을 공개해 보겠습니다.

    다음 기사로
    목차 페이지로 돌아가기

    좋은 웹페이지 즐겨찾기