Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Для отправки собственных сообщений в чаты ботов (например из дин.кода) есть реализация класса ru.bitel.bgbilling.modules.botmanager.server.bots.BotSender с одним единственным методом send( BotSender.BotMessage msg ), который принимает сообщение для отправки.

Пример построения и отправки сообщения
new BotSender().send( BotSender.BotMessage.createMessage()
                                                      .setText( "Какой-то текст сообщения" )
                                                      .setContract( 31432 )
                                                      .setContract( 22133 )
                                                      .setBotId( 2 ) );
Класс BotMessage и описание полей
	/**
     * Построение и конструирование сообщения для отправки
     */
    public static final class BotMessage
    {
        /**
         * ID договоров, для которых должно будет быть отправлено сообщение
         */
        private Set<Integer> contracts;

        /**
         * ID пользователей в мессенджерах.
         */
        private List<Long> userIds;

        /**
         * Фильтр по меткам договора. Если установлен список с метками,
         * то отправка будет только по договорам, у которых есть хотя бы одна указанная в списке метка.
         *
         * Данный фильтр распространяется только на тот список договоров, которые были переданы в contracts
         */
        private Set<Integer> contractLabelIds;

        /**
         * Если значение установлено, то сообщение будет отправлено только для участников указанного бота,
         * иначе для всех ботов
         */
        private int botId;

        /**
         * Простой текст сообщения.
         * Если так же есть Dialog, то данный текст будет создан в виде текстового элемента диалога
         * и добавлен к самому диалогу
         */
        private String text;

        /**
         * Экземпляр диалога, который построен в модуле BotManager.
         * Если отсутствует, то будет взят текст сообщения
         */
        private BotDialog dialog;

        private BotMessage() {}

        public static BotMessage createMessage()
        {
            return new BotMessage();
        }

        public BotMessage setContracts(Set<Integer> contracts)
        {
            this.contracts = contracts;
            return BotMessage.this;
        }

        /**
         * Добавляет договор в список для отправки,
         * если список пуст, то отправка будет только для этого договора
         */
        public BotMessage setContract(int contractId)
        {
            if( this.contracts == null )
                this.contracts = new HashSet<>();

            this.contracts.add( contractId );

            return BotMessage.this;
        }

        public BotMessage setContractLabelIds( List<Integer> labelIds )
        {
            this.contractLabelIds = new HashSet<>(labelIds);
            return BotMessage.this;
        }

        public BotMessage setUserIds(List<Long> userIds)
        {
            this.userIds = userIds;
            return BotMessage.this;
        }

        public BotMessage addUserId(long userId)
        {
            if( userIds == null )
                userIds = new ArrayList<>();

            userIds.add( userId );
            return BotMessage.this;
        }

        public BotMessage setBotId( int botid )
        {
            this.botId = botid;
            return BotMessage.this;
        }

        public BotMessage setText( String text )
        {
            this.text = text;
            return BotMessage.this;
        }

        public BotMessage setDialog( BotDialog dialog )
        {
            this.dialog = dialog;
            return BotMessage.this;
        }
    }

Если передаётся список id договоров, то их id в мессенджерах будут браться из статистики в ботах, если ведение статистики не было включено в конфигурации модуля, то для какого-то договора сообщение может не быть отправлено, даже если клиент авторизовался через бота.

  • Нет меток