Функция lineForward (tapi.h)

Функция lineForward пересылает вызовы, предназначенные для указанного адреса, в указанной строке в соответствии с указанными инструкциями по пересылке. При пересылке исходного адреса (dwAddressID) указанные входящие вызовы для этого адреса отклоняются на другой номер с помощью переключателя. Эта функция предоставляет сочетание функций прямого и не беспокоить. Эта функция также может отменить перенаправление, действующее в настоящее время.

Синтаксис

LONG lineForward(
  HLINE                   hLine,
  DWORD                   bAllAddresses,
  DWORD                   dwAddressID,
  LPLINEFORWARDLIST const lpForwardList,
  DWORD                   dwNumRingsNoAnswer,
  LPHCALL                 lphConsultCall,
  LPLINECALLPARAMS const  lpCallParams
);

Параметры

hLine

Дескриптор для устройства линии.

bAllAddresses

Указывает, будут ли пересылаться все исходные адреса в строке или только указанные адреса. Если задано значение TRUE, все адреса в строке пересылаются, а dwAddressID игнорируется; Значение FALSE указывает только адрес, указанный как dwAddressID .

dwAddressID

Адрес на указанной линии, входящие звонки которой должны быть переадресованы. Этот параметр игнорируется, если параметр bAllAddresses имеет значение TRUE.

Идентификатор адреса постоянно связан с адресом; идентификатор остается неизменным при обновлении операционной системы.

lpForwardList

Указатель на структуру данных изменчивого размера, которая описывает конкретные инструкции переадресации типа LINEFORWARDLIST.

dwNumRingsNoAnswer

Количество звонков до вызова считается "без ответа". Если dwNumRingsNoAnswer выходит за пределы диапазона, фактическое значение устанавливается как ближайшее значение в допустимом диапазоне.

lphConsultCall

Указатель на расположение HCALL. В некоторых средах телефонии в это расположение загружается дескриптор для консультационного звонка, который используется для обращения к стороне, в которую выполняется переадресация, и приложение становится первоначальным единственным владельцем этого звонка. Этот указатель должен быть допустимым даже в средах, где для переадресации звонков не требуется звонок на консультацию. Этот дескриптор имеет значение NULL , если не создается вызов для консультаций.

lpCallParams

Указатель на структуру типа LINECALLPARAMS. Этот указатель игнорируется, если только lineForward не требует создания вызова к назначению пересылки (и возвращается lphConsultCall , в этом случае lpCallParams является необязательным). Если значение РАВНО NULL, используются параметры вызова по умолчанию. В противном случае для установки hConsultCall используются указанные параметры вызова.

Возвращаемое значение

Возвращает положительный идентификатор запроса, если функция выполняется асинхронно, или отрицательный номер ошибки при возникновении ошибки. Параметр dwParam2 соответствующего сообщения LINE_REPLY равен нулю, если функция завершается успешно, или отрицательным номером ошибки при возникновении ошибки. Возможные возвращаемые значения:

LINEERR_INVALLINEHANDLE, LINEERR_NOMEM, LINEERR_INVALADDRESSID, LINEERR_OPERATIONUNAVAIL, LINEERR_INVALADDRESS, LINEERR_OPERATIONFAILED, LINEERR_INVALCOUNTRYCODE, LINEERR_RESOURCEUNAVAIL, LINEERR_INVALPOINTER, LINEERR_STRUCTURETOOSMALL, LINEERR_INVALPARAM LINEERR_UNINITIALIZED.

Комментарии

Успешная переадресация указывает только на то, что запрос был принят поставщиком услуг, а не на то, что переадресация настроена на коммутаторе. Сообщение LINE_ADDRESSSTATE (пересылка) предоставляет подтверждение того, что переадресация настроена на коммутаторе.

Переадресация адресов остается в силе до тех пор, пока эта функция не будет вызвана снова. Последний список переадресации заменяет старый. Перенаправление можно отменить, указав указатель NULL как lpForwardList. Если для записи в списке переадресации указан адрес назначения NULL , операция действует как do-not-disturb.

Состояние переадресации адреса также может быть затронуто извне; например, административными действиями на коммутаторе или пользователем с другой станции. Поставщику услуг может быть недоступно знать об этом изменении состояния, и он может не поддерживать синхронизацию с состоянием пересылки, известным коммутатору.

Так как поставщик услуг может не знать состояние пересылки адреса "наверняка" (то есть он мог быть переадресован или не перенаправлен неизвестным способом), lineForward завершается успешно, если не удается задать новые инструкции по пересылке. Иными словами, запрос на отмену всех переадресации в момент отсутствия переадресации выполняется успешно. Это связано с отсутствием "неподготовки" — вы можете изменить только предыдущий набор инструкций переадресации.

Успех или сбой этой операции не зависит от предыдущего набора инструкций переадресации, и то же самое верно при настройке различных инструкций переадресации. Поставщик должен "отменить все" перед настройкой новых инструкций переадресации. Так как в средах аналоговой телефонии это может занять много времени, поставщику также может потребоваться сравнить текущую пересылку с новой и выпустить инструкции для коммутатора, чтобы перейти в конечное состояние (не изменив перенаправление без изменений).

Вызов lineForward, если параметр LINEFORWARDLIST имеет значение 0 для параметра dwNumEntries, имеет тот же эффект, что и параметр lpForwardListNULL. Он отменяет все переадресации, действующие в настоящее время.

Требования

Требование Значение
Целевая платформа Windows
Header tapi.h
Библиотека Tapi32.lib
DLL Tapi32.dll

См. также раздел

Общие сведения о пересылке

LINECALLPARAMS

LINEFORWARDLIST

LINE_ADDRESSSTATE

LINE_REPLY

Дополнительные функции линейной службы

Обзор справочника по TAPI 2.2