sendDTMFTone method

  1. @override
Future<TcccOutcome> sendDTMFTone(
  1. String tone, {
  2. int? duration,
  3. int? interToneGap,
})
override

Implementation

@override
Future<TcccOutcome> sendDTMFTone(
  String tone, {
  int? duration,
  int? interToneGap,
}) async {
  if (isEnded) {
    return TcccOutcome.fail(
      TcccFailure(
        code: ErrorCode.Session.invalidState,
        message: 'call already ended; sendDTMFTone ignored',
      ),
    );
  }
  final custom = dtmfResultBuilder;
  final status = custom == null ? const TcccOutcome.ok() : custom(tone);
  if (status.success || status.code != ErrorCode.Dtmf.queueFull) {
    sentDtmf.add(tone);
  }
  final hold = sendDtmfHold;
  if (hold != null) {
    await hold.future;
  }
  return status;
}