Spaces:
Build error
Build error
Validify-testbot-1
/
botbuilder-python
/libraries
/botbuilder-dialogs
/botbuilder
/dialogs
/choices
/channel.py
# Copyright (c) Microsoft Corporation. All rights reserved. | |
# Licensed under the MIT License. | |
from botbuilder.core import TurnContext | |
from botframework.connector import Channels | |
class Channel: | |
""" | |
Methods for determining channel-specific functionality. | |
""" | |
def supports_suggested_actions(channel_id: str, button_cnt: int = 100) -> bool: | |
"""Determine if a number of Suggested Actions are supported by a Channel. | |
Args: | |
channel_id (str): The Channel to check the if Suggested Actions are supported in. | |
button_cnt (int, optional): Defaults to 100. The number of Suggested Actions to check for the Channel. | |
Returns: | |
bool: True if the Channel supports the button_cnt total Suggested Actions, False if the Channel does not | |
support that number of Suggested Actions. | |
""" | |
max_actions = { | |
# https://developers.facebook.com/docs/messenger-platform/send-messages/quick-replies | |
Channels.facebook: 10, | |
Channels.skype: 10, | |
# https://developers.line.biz/en/reference/messaging-api/#items-object | |
Channels.line: 13, | |
# https://dev.kik.com/#/docs/messaging#text-response-object | |
Channels.kik: 20, | |
Channels.telegram: 100, | |
Channels.emulator: 100, | |
Channels.direct_line: 100, | |
Channels.webchat: 100, | |
} | |
return ( | |
button_cnt <= max_actions[channel_id] | |
if channel_id in max_actions | |
else False | |
) | |
def supports_card_actions(channel_id: str, button_cnt: int = 100) -> bool: | |
"""Determine if a number of Card Actions are supported by a Channel. | |
Args: | |
channel_id (str): The Channel to check if the Card Actions are supported in. | |
button_cnt (int, optional): Defaults to 100. The number of Card Actions to check for the Channel. | |
Returns: | |
bool: True if the Channel supports the button_cnt total Card Actions, False if the Channel does not support | |
that number of Card Actions. | |
""" | |
max_actions = { | |
Channels.facebook: 3, | |
Channels.skype: 3, | |
Channels.ms_teams: 3, | |
Channels.line: 99, | |
Channels.slack: 100, | |
Channels.telegram: 100, | |
Channels.emulator: 100, | |
Channels.direct_line: 100, | |
Channels.webchat: 100, | |
} | |
return ( | |
button_cnt <= max_actions[channel_id] | |
if channel_id in max_actions | |
else False | |
) | |
def has_message_feed(_: str) -> bool: | |
"""Determine if a Channel has a Message Feed. | |
Args: | |
channel_id (str): The Channel to check for Message Feed. | |
Returns: | |
bool: True if the Channel has a Message Feed, False if it does not. | |
""" | |
return True | |
def max_action_title_length( # pylint: disable=unused-argument | |
channel_id: str, | |
) -> int: | |
"""Maximum length allowed for Action Titles. | |
Args: | |
channel_id (str): The Channel to determine Maximum Action Title Length. | |
Returns: | |
int: The total number of characters allowed for an Action Title on a specific Channel. | |
""" | |
return 20 | |
def get_channel_id(turn_context: TurnContext) -> str: | |
"""Get the Channel Id from the current Activity on the Turn Context. | |
Args: | |
turn_context (TurnContext): The Turn Context to retrieve the Activity's Channel Id from. | |
Returns: | |
str: The Channel Id from the Turn Context's Activity. | |
""" | |
if turn_context.activity.channel_id is None: | |
return "" | |
return turn_context.activity.channel_id | |