Раздатки
Если у приложения есть владелец привилегий для сеанса обмена данными, приложение может отказаться от владения другому приложению. Операция передачи обычно используется для изменения типа носителя вызова. Приложение с наивысшим приоритетом для нового типа мультимедиа должно принимать и обрабатывать вызов. Изменение типа мультимедиа обычно происходит по одной из следующих причин.
команда пользователя : через пользовательский интерфейс или сообщения окна приложение узнает, что локальный пользователь хочет изменить тип носителя. Например, пользователь сказал новому целевому приложению (который еще не является владельцем) для получения существующего голосового звонка для передачи данных. Целевое приложение должно контролировать вызов. В этом случае текущий владелец замечает, что число владельцев увеличивается, а затем отклиняет свой контроль над вызовом. Кроме того, пользователь может указать текущему владельцу вызова передать его приложению, которое может обрабатывать новый тип носителя.
изменение типа мультимедиа: поставщик услуг может обнаружить изменение типа носителя. Например, локальное приложение воспроизводит записанное голосовое сообщение вызывающему объекту. Во время этого сообщения вызывающий абонент спонтанно решает передать тон факса, а локальное приложение может реагировать соответствующим образом, изменив тип носителя на факс и при необходимости передав вызов в факс-приложение. Другой способ, который может работать для приложения мониторинга, чтобы включить мониторинг типов мультимедиа, и, когда тип носителя, в котором он заинтересован, обнаруживается при вызове, он может запросить владение вызовом. Этот механизм делает его ненужным для каждого приложения для отслеживания каждого вызова каждого типа мультимедиа.
команда удаленной стороны : удаленная сторона может интерактивно указать изменение типов носителей во время существующего вызова, например, если локальное приложение отслеживает входные данные DTMF удаленным вызывающим лицом. Через этот мониторинг вызывающий объект указывает, например, что факс будет отправлен. Другие способы, которым вызывающий объект может управлять локальными приложениями, с командами, полученными на других подключениях к данным и с помощью сообщений о пользователях-пользователей ISDN.
Ответ на вызов будет иметь один из следующих результатов:
- Вызов предоставляется другому приложению (SUCCESS).
- Приложение передачи само по себе является целевым объектом (TARGETSELF).
- Сбой передачи (TARGETNOTFOUND).
Если приложение, получающее вызов, уже имеет дескриптор вызова для вызова, используется этот старый дескриптор вызова. В противном случае создается новый дескриптор вызова. В любом случае приложение заканчивается привилегиями владельца для вызова. Всякий раз, когда приложение передачи не совпадает с целевым приложением, целевой объект сообщает о переключения в сообщении о состоянии сеанса, как если бы он получил новый вызов.
Если текущему приложению владельца будет предложено изменить типы носителей, это делается путем передачи вызова приложению, используемому для целевого типа мультимедиа. Два типа раздаточных вызовов описаны в управляемых и типе мультимедиа handoffs.
Не все поставщики услуг поддерживают использование этой операции.
TAPI 2.x: См. lineHandoff, а lpszFileName задать имя приложения для прямого передачи или dwMediaMode для одного типа носителя для косвенной передачи.
TAPI 3.x: см. ITBasicCallControl::HandoffDirect, ITBasicCallControl::HandoffIndirect.
Направленные передачи
перенаправленной передачи происходит, когда целевое приложение известно по имени исходному приложению. Такая ситуация может произойти, например, среди набора приложений, написанных одним поставщиком. Обычно пользователь может настроить управление перенаправленными раздатками. При таком раздатке вызов будет передан указанному приложению, если он открыл строку, в которой существует вызов. Тип носителя, указанный в момент открытия приложения, игнорируется. Одним из распространенных примеров является голосовой звонок, за которым следует передача факса в том же вызове. Перенаправленный раздаток чаще всего используется приложениями от того же разработчика, которые также связаны другими способами.
В будущих версиях можно также использовать перенаправленную передачу в рамках процесса арбитража нескольких приложений, ожидающих входящих вызовов одного и того же типа мультимедиа, при этом выбор приложения для обработки вызова основан на обнаружении протокола канала данных или более высокого уровня, а не типа носителя. Примером его использования будет входящая линия модема данных с такими приложениями, как удаленный захват, доска бюллетеней, удаленный доступ к сети и удаленный доступ по электронной почте, все ожидающие вызовы одновременно.
Передача типов мультимедиа
Передача типа мультимедиа происходит при наличии нового целевого типа мультимедиа, как правило, когда собственное приложение определяет, что тип носителя, необходимый для вызова, отсутствует или не изменится.
Процесс передачи, зависящей от мультимедиа, может быть процессом проверки, если бит неизвестного типа носителя включен. Это ответственность за то, что собственное приложение будет циклически проходить через типы носителей, чтобы найти приложение с наивысшим приоритетом. TAPI делает это велоспорт только при первоначальном входящем вызове, чтобы найти первого владельца. Это не делается для операции передачи. В противном случае передача практически аналогична первоначальному назначению вызова приложения. Разница заключается в том, что для косвенной передачи (типа носителя) можно задать только один тип мультимедиа.
Так как можно указать только один бит типа мультимедиа, вызов присваивается приложению с наивысшим приоритетом для этого типа мультимедиа. Тем не менее, возможно, что для передачи следует рассмотреть несколько типов носителей. В этом случае приложение передачи должно указать самый высокий приоритет возможных типов мультимедиа в качестве параметра.
Если приложение указывает бит UNKNOWN при выполнении передачи типа мультимедиа и сбой передачи, это означает, что неизвестное приложение, способное выполнять определение типа носителя в настоящее время не выполняется. Затем приложение, которое отдается, должно попытаться передать вызов приложению с наивысшим приоритетом, зарегистрированным для следующего типа мультимедиа.
Принимающее приложение теперь отвечает за вызов. Теперь он проверяет фактический тип носителя вызова. Если приложение может обрабатывать тип носителя вызова, оно должно убедиться, что оно является самым приоритетным приложением, зарегистрированным для этого типа мультимедиа. Если да, он сохраняет вызов и обрабатывает его обычно. В противном случае он передает вызов другому приложению, зарегистрированному для этого типа носителя.
Однако если проба для этого типа мультимедиа завершается ошибкой, приложение снова пытается выполнить попытку остальных возможностей в режиме мультимедиа. Сначала необходимо отключить бит текущего типа носителя, а затем попробовать другой раздаток с другим типом.
Этот процесс проверки и передачи продолжается, и остальные типы мультимедиа устраняются по одному. На этом пути одно из приложений может увидеть, что тип носителя, который он обрабатывает, находится на вызове, и передача успешно выполнена.
Затем приложение должно задать правильный тип носителя и очистить все остальные биты типа мультимедиа. Это сообщает другим заинтересованным приложениям правильного типа мультимедиа. Эти другие приложения получают уведомление о событии, указывающее, что тип носителя вызова изменился.