def convert_shortcut_buttons(items):
        """
        support shortcut buttons [{'type':'web_url', 'title':'open web url', 'value':'https://~~'}]
        """
        if items is not None and isinstance(items, list):
            result = []
            for item in items:
                if isinstance(item, BaseButton):
                    result.append(item)
                elif isinstance(item, dict):
                    if item.get('type') in ['web_url', 'postback', 'phone_number', 'element_share']:
                        type = item.get('type')
                        title = item.get('title')
                        value = item.get('value', item.get('url', item.get('payload')))

                        if type == 'web_url':
                            result.append(ButtonWeb(title=title, url=value))
                        elif type == 'postback':
                            result.append(ButtonPostBack(title=title, payload=value))
                        elif type == 'phone_number':
                            result.append(ButtonPhoneNumber(title=title, payload=value))
                        elif type == 'element_share':
                            result.append(ButtonShare())

                    else:
                        raise ValueError('Invalid button type')
                else:
                    raise ValueError('Invalid buttons variables')
            return result
        else:
            return items
support shortcut buttons [{'type':'web_url', 'title':'open web url', 'value':'https://~~'}]