The level of abstraction of this API is very low. From the point of view of the CC application, we only want to:
  1. Broadcast we are sending a balance / topup SMS and we are waiting a response.
  2. Broadcast we are no longer waiting for any SMS to be received.

Nothing more, nothing less. The silenced SMS is an action taken by the SMS application, we have no knowledge about the actions that Message or other apps could take upon our broadcast. Do you understand?

So, let's decouple this a little bit. Notice all your methods are reusable, we are only rising the level of abstractions. First, let's rename the class because we are not handling any SMS. From my point of view, this class should be a singleton and so, a simple module suffices but you're free of leaving it as it is. Let's call this as `IACManager` or think a better name.

Now you can provide: `broadcastStartOfSMSQuery(type)`, `broadcastEndOfSMSQuery(type)` and reword the keyword to be `costcontrol-sms-query' or something like that.

When broadcasting the enabling of the query we should communicate:
 * The outgoing number.
 * The incoming numbers.

When broadcasting we are disabling the query we should communicate:
 * The incoming numbers.
 * The list of received SMS' ids from those senders which were not valid responses such as promotions (in a follow-up).

Oh! And use promises for this API. ,)