Для отправки собственных сообщений в чаты ботов (например из дин.кода) есть реализация класса 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 ) );
/**
* Построение и конструирование сообщения для отправки
*/
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 в мессенджерах будут браться из статистики в ботах, если ведение статистики не было включено в конфигурации модуля, то для какого-то договора сообщение может не быть отправлено, даже если клиент авторизовался через бота.