class_docstr: Bot Framework input channel implementation.
docstr: Create a Bot Framework input channel.
  
  Args:
      app_id: Bot Framework's API id
      app_password: Bot Framework application secret
docstr_tok: ["Create","a","Bot","Framework","input","channel",".","Args",":","app_id",":","Bot","Framework","'s","API","id","app_password",":","Bot","Framework","application","secret"]
code: def __init__(self, app_id: Text, app_password: Text) -> None:
      """Create a Bot Framework input channel.
  
      Args:
          app_id: Bot Framework's API id
          app_password: Bot Framework application secret
      """
      self.app_id = app_id
      self.app_password = app_password
  
      self.jwt_keys: Dict[Text, Any] = {}
      self.jwt_update_time = datetime.datetime.fromtimestamp(0)
  
      self._update_cached_jwk_keys()
  
imports: import datetime
  import json
  import logging
  import re
  from http import HTTPStatus
  from typing import Text, Dict, Any, List, Iterable, Callable, Awaitable, Optional
  import jwt
  import requests
  from jwt import InvalidKeyError, PyJWTError
  from jwt.algorithms import RSAAlgorithm
  from requests import HTTPError
  from sanic import Blueprint, response
  from sanic.request import Request
  from sanic.response import HTTPResponse
  from rasa.core.channels.channel import UserMessage, OutputChannel, InputChannel
label_desc: Use image node_id 3 to create a new BotFrameworkInput object from inherited base classes: InputChannel with example: obj = BotFrameworkInput(app_id, app_password)