查看源代码 megaco (megaco v4.7)

Megaco 应用程序的主要 API

Megaco 应用程序的接口模块

概要

类型

此类型是基本(原子)查找键(用于活动连接的信息)。对应的值可以是任何类型。

Megaco 标识符。

不透明的发送句柄,其内容对于发送模块是内部的。可以是任何项。

传递给跟踪处理函数(在第二个参数中)并由其返回的跟踪数据。例如,这可以是一个文件描述符,跟踪处理函数可以使用它将事件打印到文件中。

由 dbg 生成的跟踪事件。

跟踪处理函数用于“处理”每个跟踪事件(例如,格式化后打印到文件或 stdout)。

应该产生多少跟踪事件。 min (=0) 表示不产生跟踪事件,这是默认值。

  • connections - 列出此用户的所有活动连接。返回 megaco_conn_handle 记录列表。

当函数的返回将被忽略时使用该类型。

函数

发送一个或多个事务请求,并等待回复。

取消此连接的所有未完成消息

发送一个或多个事务请求,但不等待回复

查找有关活动连接的信息

解码(解析)属性参数结构。

此函数用于停止 megaco 跟踪。

断开“虚拟”连接

此函数用于在给定 Level 启动 megaco 跟踪,并将结果定向到给定的 Destination

编码一个或多个事务请求的动作请求列表。

编码(生成)SDP 结构。

根据数字映射收集数字映射字母。

检索由 megaco 应用程序维护的所有(SNMP)统计计数器。

检索由 megaco 应用程序维护的(SNMP)(全局)统计计数器。

检索由 megaco 应用程序维护的(SNMP)统计计数器。

此函数生成有关 megaco 应用程序的信息列表。例如用户及其配置、连接及其配置、统计信息等。

解析数字映射主体

实用函数,用于生成由 versions1versions2 函数生成的版本信息的格式化打印输出。

向事件收集器进程发送一个或多个事件。

重置所有(SNMP)统计计数器。

重置指定的(SNMP)统计计数器。

此函数用于更改 megaco 跟踪级别。

启动 Megaco 应用程序

用户的初始配置

停止 Megaco 应用程序

删除用户的配置

查找系统信息。

向数字映射收集器馈送事件并返回结果

将令牌标签转换为字符串

更新有关活动连接的信息

更新有关用户的信息

查找用户信息

等效于 versions2/0

用于检索一些系统和应用程序信息的实用函数。

类型

-type action_reply() :: megaco_encoder:action_reply().
链接到此类型

action_reps()

查看源代码 (未导出)
-type action_reps() :: [action_reply()].
链接到此类型

action_reqs()

查看源代码 (未导出)
-type action_reqs() :: binary() | [action_request()].
-type action_request() :: megaco_encoder:action_request().
-type conn_handle() :: megaco_user:conn_handle().
链接到此类型

conn_info_item()

查看源代码 (未导出)
-type conn_info_item() ::
          control_pid | send_handle | local_mid | remote_mid | receive_handle | trans_id |
          max_trans_id | request_timer | long_request_timer | request_keep_alive_timeout |
          long_request_resend | reply_timer | call_proxy_gc_timeout | auto_ack | trans_ack |
          trans_ack_maxcount | trans_req | trans_req_maxcount | trans_req_maxsize | trans_timer |
          pending_timer | sent_pending_limit | recv_pending_limit | send_mod | encoding_mod |
          encoding_config | protocol_version | strict_version | reply_data | threaded |
          resend_indication | segment_reply_ind | segment_recv_timer | segment_send | max_pdu_size.

此类型是基本(原子)查找键(用于活动连接的信息)。对应的值可以是任何类型。

  • control_pid - 连接的控制进程的进程标识符。

    值类型:pid()

  • send_handle - 不透明的发送句柄,其内容对于发送模块是内部的。

    值类型:send_handle/0

  • local_mid - 本地 mid(连接的,即自己的 mid)。

    值类型:mid/0

  • remote_mid - 远程 mid(连接的)。

    值类型:mid/0

  • receive_handle - 构建 megaco_receive_handle 记录。

    值类型:receive_handle/0

  • trans_id - 下一个事务 id。

    请注意,事务 id(目前)是按用户维护的,因此无法确定返回的值是否实际用于在此连接上发送的事务(如果用户有多个连接,这并非不可能)。

    值类型:transaction_id/0 | undefined_serial

  • max_trans_id - 上一个事务 id。

    值类型:transaction_id/0 | infinity

  • request_timer - 等待回复。

    收到回复时,定时器会被取消。

    当收到待处理消息时,定时器会被取消,并改为启动 long_request_timer(见下文)。此时不会执行任何重发(因为我们现在知道对方已收到请求)。

    当定时器达到中间过期时间时,请求将被重发,定时器将被重新启动。

    当定时器达到最终过期时间时,函数 megaco:call 将返回 {error, timeout},或者回调函数 handle_trans_reply 将被调用,其中 UserReply = {error, timeout}(如果使用 megaco:cast)。

    值类型:megaco_timer/0

    默认为 #megaco_incr_timer{}

  • long_request_timer - 在收到待处理消息后等待回复。

    当定时器达到中间过期时间时,定时器将重新启动。

    当收到待处理消息,且 long_request_timer 不在“最终阶段”时,定时器将重新启动,并且,如果 long_request_resend = true,则请求将被重新发送。

    值类型:megaco_timer/0

    默认为 60 秒

  • request_keep_alive_timeout - 指定请求保持活动定时器的超时时间。

    当异步请求(使用 megaco:cast/3 函数发出)的第一个回复到达时,将启动此定时器。只要此定时器正在运行,回复将通过 handle_trans_reply/4,5 回调函数传递,并带有它们的“到达编号”(请参阅 handle_trans_reply/4,5 回调函数的 UserReply)。

    在定时器过期后到达的回复将使用 handle_unexpected_trans/3,4 回调函数传递。

    值类型:plain | non_neg_integer()

    默认为 plain

  • long_request_resend - 此选项指示是否应重新发送请求,直到收到回复,即使已收到待处理消息。

    通常,在收到待处理消息后,不会重新发送请求(因为待处理消息表示已收到请求)。但是,由于回复(对请求)可能会丢失,因此此行为有其价值。

    当然,除非 long_request_timer(见上文)也设置为增量定时器 (#megaco_incr_timer{}),否则将此值设置为 true 是没有意义的。

    值类型:boolean()

    默认为 false

  • reply_timer - 等待 ack。

    当收到请求时,一些与回复相关的信息将存储在内部(例如回复的二进制文件)。此信息将一直存在,直到收到 ack 或此定时器过期。例如,如果再次收到相同的请求(例如,具有相同事务 id 的请求),则 megaco 将自动(重新)发送(存储的)回复。

    如果定时器类型为 #megaco_incr_timer{},则对于每个中间超时,将重新发送回复(这在收到确认或定时器过期之前有效)。

    值类型:megaco_timer/0

    默认为 30000

  • call_proxy_gc_timeout - 调用代理的超时时间。

    当使用 call/3 函数发送请求时,会启动一个代理进程来处理所有回复。当收到回复并传递给用户后,代理进程将继续存在,直到此选项指定的时间。任何收到的消息都会通过 handle_unexpected_trans 回调函数传递给用户。

    超时时间以毫秒为单位。值为 0(零)表示代理进程将在回复传递后立即退出。

    值类型:non_neg_integer()

    默认为 5000 (= 5 秒)。

  • auto_ack - 当收到事务回复时自动发送事务确认(请参阅下面的 trans_ack)。

    这用于三向握手

    值类型:boolean()

    默认为 false

  • trans_ack - 是否应累积确认。

    此属性仅在 auto_ack 为 true 时有效。

    如果 auto_ack 为 true,那么如果 trans_ackfalse,则确认将立即发送。如果 trans_acktrue,则确认将发送到事务发送者进程进行累积和稍后发送(请参阅 trans_ack_maxcounttrans_req_maxcounttrans_req_maxsizetrans_ack_maxcounttrans_timer)。

    另请参阅 事务发送者 获取更多信息。

    值类型:boolean()

    默认为 false

  • trans_ack_maxcount - 累积确认的最大数量。事务发送者(如果已启动并配置为累积确认)将最多累积此数量的确认。

    另请参阅 事务发送者 获取更多信息。

    值类型:non_neg_integer()

    默认为 10

  • trans_req - 是否应累积请求。

    如果 trans_reqfalse,则请求将立即发送(在自己的消息中)。

    如果 trans_req 为 true,则请求将发送到事务发送者进程进行累积和稍后发送(请参阅 trans_ack_maxcounttrans_req_maxcounttrans_req_maxsizetrans_ack_maxcounttrans_timer)。

    另请参阅 事务发送者 获取更多信息。

    值类型:boolean()

    默认为 false

  • trans_req_maxcount - 累积请求的最大数量。事务发送者(如果已启动并配置为累积请求)将最多累积此数量的请求。

    另请参阅 事务发送者 获取更多信息。

    值类型:non_neg_integer()

    默认为 10

  • trans_req_maxsize - 累积请求的最大大小。事务发送者(如果已启动并配置为累积请求)将最多累积此大小的请求。

    另请参阅 事务发送者 获取更多信息。

    值类型:non_neg_integer()

    默认为 2048

  • trans_timer - 事务发送者超时时间。具有两个功能。首先,如果值为 0,则不会累积事务(例如,不会启动事务发送者进程)。其次,如果值大于 0 且 auto_acktrans_ack 为 true,或者如果 trans_req 为 true,则将启动事务发送者并累积事务(取决于 auto_acktrans_acktrans_req 的值),以便稍后发送。

    另请参阅 事务发送者 获取更多信息。

    值类型:non_neg_integer()

    默认为 0

  • pending_timer - 如果定时器在事务回复发送之前过期,则自动发送事务挂起。此定时器也称为临时响应定时器。

    值类型:megaco_timer/0

    默认为 30000 (= 30 秒)。

  • sent_pending_limit - 发送挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以发送多少挂起消息(对于给定的接收事务请求)。当超出限制时,事务将中止(请参阅 handle_trans_request_abort),并且向另一方发送错误消息。

    请注意,这不会影响挂起事务的实际发送。这要么是隐式的(例如,当接收到正在处理的请求的重新发送事务请求时),要么由 pending_timer 控制,请参见上文。

    值类型:pos_integer() | infinity

    默认为 infinity

  • recv_pending_limit - 接收挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以接收多少挂起消息(对于发送的事务请求)。当超出限制时,事务将被视为丢失,并向用户返回错误(通过回调函数 handle_trans_reply)。

    值类型:pos_integer() | infinity

    默认为 infinity

  • send_mod - 发送回调模块,该模块导出 send_message/2。当需要将字节传输到远程用户时,将调用函数 SendMod:send_message(SendHandle, Binary)。

    值类型:module()

    默认为 megaco_tcp

  • encoding_mod - 编码回调模块,该模块导出 encode_message/2 和 decode_message/2。每当需要将 'MegacoMessage' 记录转换为 Erlang 二进制文件时,将调用函数 EncodingMod:encode_message(EncodingConfig, MegacoMessage)。每当需要将 Erlang 二进制文件转换为 'MegacoMessage' 记录时,将调用函数 EncodingMod:decode_message(EncodingConfig, Binary)。

    值类型:module()

    默认为 megaco_pretty_text_encoder

  • encoding_config - 编码模块配置。

    值类型:loist()

    默认为 []

  • protocol_version - 实际协议版本。

    值类型:protocol_version/0

    默认为 1

  • strict_version - 严格版本控制,即当收到消息时,验证版本是否为协商的版本。

    值类型:boolean()

    默认为 true

  • reply_data - 默认回复数据。

    值类型:term()

    默认为 undefined

  • threaded - 如果收到的消息包含多个事务请求,此选项指示应在同一进程中按顺序处理请求 (false),还是应由其自己的进程处理每个请求 (true,即为每个请求生成单独的进程)。

    值类型:boolean()

    默认为 false

  • resend_indication - 此选项指示是否应告知传输模块消息发送是否为重发。

    如果为false,则使用 send_message/2 函数发送 megaco 消息。

    如果为true,则使用 resend_message 函数进行 megaco 消息重发。初始消息发送仍然使用 send_message 函数完成。

    特殊值 flag 则表示应使用函数 send_message/3

    值类型:flag | boolean()

    默认为 false

  • segment_reply_ind - 此选项指定是否应通知用户收到分段回复。

    有关更多信息,请参阅 handle_segment_reply 回调函数。

    值类型:boolean()

    默认为 false

  • segment_recv_timer - 当收到由 分段完成令牌 指示的分段时(例如,构成回复的最后一个分段),但尚未收到所有分段时,将启动此定时器。

    当定时器最终过期时,将向另一方发送“megaco 分段未收到”(459) 错误消息,并通过 handle_trans_reply 回调函数或 call/2 函数的返回值中的 分段超时 UserReply 通知用户。

    值类型:megaco_timer/0

    默认为 10000 (= 10 秒)。

  • segment_send - 是否应分段传出消息。

    值类型:none | pos_integer() | infinity

    • none - 不分段传出的回复消息。当已知消息永远不会太大或传输协议可以自行处理此类事情(例如 TCP 或 SCTP)时,此方法很有用。

    • pos_integer/0 - 将根据需要分段传出的回复消息(请参阅下面的 max_pdu_size)。此值 K 指示未完成的窗口,即在任何给定时间可以有多少个未完成(未确认)的分段。

    • infinity - 将根据需要分段传出的回复消息(请参阅下面的 max_pdu_size)。分段消息一次全部发送(即,在发送下一个分段之前不会等待确认)。

    默认为 none

  • max_pdu_size - 最大消息大小。如果编码的消息 (PDU) 超过此大小,则应分段消息,然后进行编码。

    值类型:infinity | pos_integer()

    默认为 infinity

链接到此类型

counter()

查看源代码 (未导出)
-type counter() :: medGwyGatewayNumTimerRecovery | medGwyGatewayNumErrors.
链接到此类型

counter_value()

查看源代码 (未导出)
-type counter_value() :: non_neg_integer().
-type digit_map_event() :: megaco_digit_map:event().
-type digit_map_kind() :: megaco_digit_map:kind().
-type digit_map_letter() :: megaco_digit_map:letter().
-type digit_map_value() :: megaco_digit_map:value().
-type error_desc() :: megaco_encoder:error_desc().
链接到此类型

global_counter()

查看源代码 (未导出)
-type global_counter() :: medGwyGatewayNumErrors.
链接到此类型

megaco_message()

查看源代码 (未导出)
-type megaco_message() :: megaco_encoder:megaco_message().
链接到此类型

megaco_timer()

查看源代码 (未导出)
-type megaco_timer() :: megaco_user:megaco_timer().

Megaco 标识符。

-type property_group() :: megaco_sdp:property_group().
-type property_groups() :: megaco_sdp:property_groups().
-type property_parm() :: megaco_sdp:property_parm().
-type protocol_version() :: megaco_encoder:protocol_version().
-type receive_handle() :: megaco_user:receive_handle().
-type sdp() :: megaco_sdp:sdp().
链接到此类型

sdp_property_group()

查看源代码 (未导出)
-type sdp_property_group() :: megaco_sdp:sdp_property_group().
链接到此类型

sdp_property_groups()

查看源代码 (未导出)
-type sdp_property_groups() :: megaco_sdp:sdp_property_groups().
链接到此类型

sdp_property_parm()

查看源代码 (未导出)
-type sdp_property_parm() :: megaco_sdp:sdp_property_parm().
链接到此类型

segment_no()

查看源代码 (未导出)
-type segment_no() :: megaco_encoder:segment_no().
链接到此类型

send_handle()

查看源代码 (未导出)
-type send_handle() :: term().

不透明的发送句柄,其内容对于发送模块是内部的。可以是任何项。

链接到此类型

system_info_item()

查看源代码 (未导出)
-type system_info_item() ::
          text_config | connections | users | n_active_requests | n_active_replies |
          n_active_connections | reply_counters | pending_counters.

  • text_config - 文本编码配置。

    值类型:term()

  • connections - 列出所有活动连接。返回 megaco_conn_handle 记录的列表。

    值类型:[conn_handle/0]

  • users - 列出所有活动用户。

    值类型:[mid/0]

  • n_active_requests - 返回源自此 Erlang 节点且仍处于活动状态(因此消耗系统资源)的请求数量。

    值类型:non_neg_integer()

  • n_active_replies - 返回源自此 Erlang 节点且仍处于活动状态(因此消耗系统资源)的回复数量。

    值类型:non_neg_integer()

  • n_active_connections - 返回活动连接的数量。

    值类型:non_neg_integer()

  • reply_counters - 返回回复计数器列表。

    值类型:[{conn_handle/0, transaction_id/0, 非负整数()}]

  • pending_counters - 返回接收和发送的挂起计数器列表。

    值类型:[{recv | sent, [{transaction_id/0, 非负整数()}]}]

链接到此类型

trace_data()

查看源码 (未导出)
-type trace_data() :: term().

传递给跟踪处理函数(在第二个参数中)并由其返回的跟踪数据。例如,这可以是一个文件描述符,跟踪处理函数可以使用它将事件打印到文件中。

链接到此类型

trace_event()

查看源码 (未导出)
-type trace_event() :: term().

由 dbg 生成的跟踪事件。

链接到此类型

trace_handler()

查看源码 (未导出)
-type trace_handler() :: fun((trace_event(), trace_data()) -> trace_data()).

跟踪处理函数用于“处理”每个跟踪事件(例如,格式化后打印到文件或 stdout)。

-type trace_level() :: min | max | 0..100.

应该产生多少跟踪事件。 min (=0) 表示不产生跟踪事件,这是默认值。

链接到此类型

transaction_id()

查看源码 (未导出)
-type transaction_id() :: pos_integer().
-type transaction_reply() :: megaco_encoder:transaction_reply().
链接到此类型

user_info_item()

查看源码 (未导出)
-type user_info_item() ::
          connections | receive_handle | trans_id | min_trans_id | max_trans_id | request_timer |
          long_request_timer | long_request_resend | reply_timer | request_keep_alive_timeout |
          call_proxy_gc_timeout | auto_ack | trans_ack | trans_ack_maxcount | trans_req |
          trans_req_maxcount | trans_req_maxsize | trans_timer | pending_timer | sent_pending_limit |
          recv_pending_limit | send_mod | encoding_mod | encoding_config | protocol_version |
          strict_version | reply_data | user_mod | user_args | threaded | resend_indication |
          segment_reply_ind | segment_recv_timer | segment_send | max_pdu_size.
  • connections - 列出此用户的所有活动连接。返回 megaco_conn_handle 记录列表。

    值类型:[conn_handle/0]

  • receive_handle - 从用户配置构造 receive_handle。

    值类型:receive_handle/0

  • trans_id - 当前事务 ID。

    值类型:transaction_id/0 | undefined_serial

  • min_trans_id - 第一个事务 ID。

    值类型:transaction_id/0

    默认为 1

  • max_trans_id - 上一个事务 id。

    值类型:transaction_id/0 | infinity

    默认为 infinity

  • request_timer - 等待回复。

    收到回复时,定时器会被取消。

    当收到待处理消息时,定时器会被取消,并改为启动 long_request_timer(见下文)。此时不会执行任何重发(因为我们现在知道对方已收到请求)。

    当定时器达到中间过期时间时,请求将被重发,定时器将被重新启动。

    当定时器达到最终过期时间时,函数 megaco:call 将返回 {error, timeout},或者回调函数 handle_trans_reply 将被调用,其中 UserReply = {error, timeout}(如果使用 megaco:cast)。

    值类型:megaco_timer/0

    默认为 #megaco_incr_timer{}

  • long_request_timer - 在收到待处理消息后等待回复。

    当定时器达到中间过期时间时,定时器会重新启动。

    当收到待处理消息,且 long_request_timer 不在“最终阶段”时,定时器将重新启动,并且,如果 long_request_resend = true,则请求将被重新发送。

    值类型:megaco_timer/0

    默认为 60000(= 60 秒)。

  • long_request_resend - 此选项指示是否应重新发送请求,直到收到回复,即使已收到待处理消息。

    通常,在收到待处理消息后,不会重新发送请求(因为待处理消息表示已收到请求)。但是,由于回复(对请求)可能会丢失,因此此行为有其价值。

    当然,除非 long_request_timer(见上文)也设置为增量定时器 (#megaco_incr_timer{}),否则将此值设置为 true 是没有意义的。

    值类型:boolean()

    默认为 false

  • reply_timer - 等待 ack。

    当收到请求时,一些与回复相关的信息将存储在内部(例如回复的二进制文件)。此信息将一直存在,直到收到 ack 或此定时器过期。例如,如果再次收到相同的请求(例如,具有相同事务 id 的请求),则 megaco 将自动(重新)发送(存储的)回复。

    如果定时器类型为 #megaco_incr_timer{},则对于每个中间超时,将重新发送回复(这在收到确认或定时器过期之前有效)。

    值类型:megaco_timer/0

    默认为 30 秒

  • request_keep_alive_timeout - 指定请求保持活动定时器的超时时间。

    当异步请求(使用 megaco:cast/3 函数发出)的第一个回复到达时,将启动此定时器。只要此定时器正在运行,回复将通过 handle_trans_reply/4,5 回调函数传递,并带有它们的“到达编号”(请参阅 handle_trans_reply/4,5 回调函数的 UserReply)。

    在定时器过期后到达的回复将使用 handle_unexpected_trans/3,4 回调函数传递。

    值类型:plain | non_neg_integer()

    默认为 plain

  • call_proxy_gc_timeout - 调用代理的超时时间。

    当使用 call/3 函数发送请求时,会启动一个代理进程来处理所有回复。当收到回复并传递给用户后,代理进程将继续存在,直到此选项指定的时间。任何收到的消息都会通过 handle_unexpected_trans 回调函数传递给用户。

    超时时间以毫秒为单位。值为 0(零)表示代理进程将在回复传递后立即退出。

    值类型:正整数()

    默认为 5000 (= 5 秒)。

  • auto_ack - 当收到事务回复时自动发送事务确认(请参阅下面的 trans_ack)。

    这用于三向握手

    值类型:boolean()

    默认为 false

  • trans_ack - 是否应累积确认。

    此属性仅在 auto_ack 为 true 时有效。

    如果 auto_ack 为 true,那么如果 trans_ackfalse,则确认将立即发送。如果 trans_acktrue,则确认将发送到事务发送者进程进行累积和稍后发送(请参阅 trans_ack_maxcounttrans_req_maxcounttrans_req_maxsizetrans_ack_maxcounttrans_timer)。

    另请参阅 事务发送者 获取更多信息。

    值类型:boolean()

    默认为 false

  • trans_ack_maxcount - 累积确认的最大数量。事务发送者(如果已启动并配置为累积确认)将最多累积此数量的确认。

    另请参阅 事务发送者 获取更多信息。

    值类型:整数()

    默认为 10

  • trans_req - 是否应累积请求。

    如果 trans_reqfalse,则请求将立即发送(在自己的消息中)。

    如果 trans_req 为 true,则请求将发送到事务发送者进程进行累积和稍后发送(请参阅 trans_ack_maxcounttrans_req_maxcounttrans_req_maxsizetrans_ack_maxcounttrans_timer)。

    另请参阅 事务发送者 获取更多信息。

    值类型:boolean()

    默认为 false

  • trans_req_maxcount - 累积请求的最大数量。事务发送者(如果已启动并配置为累积请求)将最多累积此数量的请求。

    另请参阅 事务发送者 获取更多信息。

    值类型:整数()

    默认为 10

  • trans_req_maxsize - 累积请求的最大大小。事务发送者(如果已启动并配置为累积请求)将最多累积此大小的请求。

    另请参阅 事务发送者 获取更多信息。

    值类型:整数()

    默认为 2048

  • trans_timer - 事务发送者超时时间。具有两个功能。首先,如果值为 0,则不会累积事务(例如,不会启动事务发送者进程)。其次,如果值大于 0 且 auto_acktrans_ack 都为 true,或者如果 trans_req 为 true,则将启动事务发送者,并且会累积事务(取决于 auto_acktrans_acktrans_req 的值),以便稍后发送。

    另请参阅 事务发送者 获取更多信息。

    值类型:整数()

    默认为 0

  • pending_timer - 如果定时器在发送事务回复之前过期,则自动发送挂起。此定时器也称为临时响应定时器。

    值类型:megaco_timer/0

    默认为 30000

  • sent_pending_limit - 发送挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以发送多少挂起消息(对于给定的接收事务请求)。当超出限制时,事务将中止(请参阅 handle_trans_request_abort),并且向另一方发送错误消息。

    请注意,这不会影响挂起事务的实际发送。这要么是隐式的(例如,当接收到正在处理的请求的重新发送事务请求时),要么由 pending_timer 控制,请参见上文。

    值类型:infinity | pos_integer()

    默认为 infinity

  • recv_pending_limit - 接收挂起限制(请参阅 megaco 根包的 MGOriginatedPendingLimit 和 MGCOriginatedPendingLimit)。此参数指定可以接收多少挂起消息(对于发送的事务请求)。当超出限制时,事务将被视为丢失,并向用户返回错误(通过回调函数 handle_trans_reply)。

    值类型:infinity | pos_integer()

    默认为 infinity

  • send_mod - 发送回调模块,该模块导出 send_message/2。当需要将字节传输到远程用户时,将调用函数 SendMod:send_message(SendHandle, Binary)。

    值类型:模块()

    默认为 megaco_tcp

  • encoding_mod - 编码回调模块,该模块导出 encode_message/2 和 decode_message/2。每当需要将 'MegacoMessage' 记录转换为 Erlang 二进制文件时,将调用函数 EncodingMod:encode_message(EncodingConfig, MegacoMessage)。每当需要将 Erlang 二进制文件转换为 'MegacoMessage' 记录时,将调用函数 EncodingMod:decode_message(EncodingConfig, Binary)。

    值类型:模块()

    默认为 megaco_pretty_text_encoder

  • encoding_config - 编码模块配置。

    值类型:列表()

    默认为 []

  • protocol_version - 实际协议版本。

    值类型:protocol_version/0

    默认为 1

  • strict_version - 严格版本控制,即当收到消息时,验证版本是否为协商的版本。

    值类型:boolean()

    默认为 true

  • reply_data - 默认回复数据。

    值类型:term()

    默认为 undefined

  • user_mod - 用户回调模块的名称。有关更多信息,请参阅 megaco_user 的参考手册。

    值类型:模块()

    没有默认值,因为它是一个强制的配置选项。

  • user_args - 用户回调函数的额外参数列表。有关更多信息,请参阅 megaco_user 的参考手册。

    值类型:列表()

  • threaded - 如果收到的消息包含多个事务请求,此选项指示应在同一进程中按顺序处理请求 (false),还是应由其自己的进程处理每个请求 (true,即为每个请求生成单独的进程)。

    值类型:boolean()

    默认为 false

  • resend_indication - 此选项指示是否应告知传输模块消息发送是否为重发。

    如果为false,则使用 send_message 函数发送 Megaco 消息。

    如果为true,则使用 resend_message 函数进行 megaco 消息重发。初始消息发送仍然使用 send_message 函数完成。

    特殊值 flag 则表示应使用函数 send_message/3

    值类型:boolean()

    默认为 false

  • segment_reply_ind - 此选项指定是否应通知用户收到分段回复。

    有关更多信息,请参阅 handle_segment_reply 回调函数。

    值类型:boolean()

    默认为 false

  • segment_recv_timer - 当收到由 分段完成标记指示的分段时,但尚未收到所有分段时,将启动此定时器。

    当定时器最终过期时,会向另一端发送“未收到 Megaco 分段”(459)错误消息,并通过 分段超时 UserReplyhandle_trans_reply 回调函数或 call/3 函数的返回值中通知用户。

    值类型:megaco_timer/0

    默认为 10000

  • segment_send - 是否应分段传出消息。

    值类型:none | pos_integer() | infinity

    • none - 不分段传出的回复消息。当已知消息永远不会太大或传输协议可以自行处理此类事情(例如 TCP 或 SCTP)时,此方法很有用。

    • pos_integer/0 - 将根据需要分段传出的回复消息(请参阅下面的 max_pdu_size)。此值 K 指示未完成的窗口,即在任何给定时间可以有多少个未完成(未确认)的分段。

    • infinity - 将根据需要分段传出的回复消息(请参阅下面的 max_pdu_size)。分段消息一次全部发送(即,在发送下一个分段之前不会等待确认)。

    默认为 none

  • max_pdu_size - 最大消息大小。如果编码的消息 (PDU) 超过此大小,则应分段消息,然后进行编码。

    值类型:infinity | pos_integer()

    默认为 infinity

-type void() :: term().

当函数的返回将被忽略时使用该类型。

函数

此函数的链接

call(ConnHandle, ActionRequests, SendOptions)

查看源代码
-spec call(ConnHandle, ActionRequests, SendOptions) -> {ProtocolVersion, UserReply | [UserReply]}
              when
                  ConnHandle :: conn_handle(),
                  ActionRequests :: action_reqs() | [action_reqs()],
                  SendOptions :: [SendOption],
                  SendOption ::
                      {request_timer, megaco_timer()} |
                      {long_request_timer, megaco_timer()} |
                      {send_handle, send_handle()} |
                      {protocol_version, protocol_version()} |
                      {call_proxy_gc_timeout, non_neg_integer()},
                  ProtocolVersion :: protocol_version(),
                  UserReply :: Success | Failure,
                  Success :: {ok, Result} | {ok, Result, SuccessExtra},
                  Result :: MessageResult | SegmentResult,
                  MessageResult :: action_reps(),
                  SegmentResult :: SegmentsOk,
                  SegmentsOk :: [{segment_no(), action_reps()}],
                  Failure :: {error, Reason} | {error, Reason, ErrorExtra},
                  Reason :: MessageReason | SegmentReason | UserCancelReason | SendReason | OtherReason,
                  MessageReason :: error_desc(),
                  SegmentReason ::
                      {segment, SegmentsOk, SegmentsErr} |
                      {segment_timeout, MissingSegments, SegmentsOk, SegmentsErr},
                  SegmentsErr :: {segment_no(), error_desc()},
                  MissingSegments :: [segment_no()],
                  UserCancelReason :: {user_cancel, ReasonForUserCancel},
                  ReasonForUserCancel :: term(),
                  SendReason :: SendCancelledReason | SendFailedReason,
                  SendCancelledReason :: {send_message_cancelled, term()},
                  SendFailedReason :: {send_message_failed, term()},
                  OtherReason ::
                      {wrong_mid, WrongMid :: mid(), RightMid :: mid(), transaction_reply()} | term(),
                  SuccessExtra :: term(),
                  ErrorExtra :: term().

发送一个或多个事务请求,并等待回复。

在消息中发送一个事务时,ActionRequests 应该是 action_reqs/0(回复将是 UserReply)。在消息中发送多个事务时,ActionRequests 应该是 [action_reqs()](回复将是 [UserReply])。列表中的每个元素都是一个事务的一部分。

对于我们的一些编解码器(非二进制),也可以预编码操作,在这种情况下,ActionRequests 将是 二进制/0[二进制()]

当回复到达、请求定时器最终超时或显式取消未完成的请求时,该函数返回。

发送选项的默认值通过 megaco:conn_info(ConnHandle, Item) 获取。但是,上面的发送选项可能会被显式覆盖。

ProtocolVersion 版本是实际在回复消息中编码的版本。

Success 时,UserReply 包含一个“ActionReply”记录列表,其中可能包含错误指示。

Failure 表示远程用户已回复显式 transactionError。

UserCancelReason 表示请求已被用户取消。ReasonForUserCancel 是调用 cancel/2 函数时给出的原因。

发送错误(SendReason)表示 megaco 传输回调模块的发送函数未能发送请求。有两种不同的情况:SendCancelledReasonSendFailedReason。第一个是发送函数返回 {cancel, Reason} 的结果,第二个是其他类型的错误返回值。有关更多信息,请参阅 send_message 函数。

OtherReason 表示其他一些错误,例如超时。

有关结果的“额外”部分(SuccessExtraErrorExtra)的更多信息,请参阅用户回调模块文档中的注释

此函数的链接

cancel(ConnHandle, CancelReason)

查看源代码
-spec cancel(ConnHandle, CancelReason) -> ok | {error, Reason}
                when ConnHandle :: conn_handle(), CancelReason :: term(), Reason :: term().

取消此连接的所有未完成消息

这会导致未完成的 megaco:call/3 请求返回。还会调用回调函数 UserMod:handle_reply/4 和 UserMod:handle_trans_ack/4(如果适用)。有关回调参数的更多信息,请参阅 megaco_user 模块。

此函数的链接

cast(ConnHandle, ActionRequests, SendOptions)

查看源代码
-spec cast(ConnHandle, ActionRequests, SendOptions) -> ok | {error, Reason}
              when
                  ConnHandle :: conn_handle(),
                  ActionRequests :: action_reqs() | [action_reqs()],
                  SendOptions :: [SendOption],
                  SendOption ::
                      {request_keep_alive_timeout, RequestKeepAliveTimer} |
                      {request_timer, megaco_timer()} |
                      {long_request_timer, megaco_timer()} |
                      {send_handle, send_handle()} |
                      {reply_data, ReplyData} |
                      {protocol_version, ProtocolVersion},
                  RequestKeepAliveTimer :: plain | non_neg_integer(),
                  ReplyData :: term(),
                  ProtocolVersion :: protocol_version(),
                  Reason :: term().

发送一个或多个事务请求,但不等待回复

在消息中发送一个事务时,ActionRequests 应该是 action_reqs/0。在消息中发送多个事务时,ActionRequests 应该是 [action_reqs()]。列表中的每个元素都是一个事务的一部分。

对于我们的一些编解码器(非二进制),也可以预编码操作,在这种情况下,Actions 将是 二进制/0[二进制()]

发送选项的默认值通过 megaco:conn_info(ConnHandle, Item) 获取。但是,上面的发送选项可能会被显式覆盖。

ProtocolVersion 版本是实际在回复消息中编码的版本。

当回复到达、请求定时器最终超时或显式取消未完成的请求时,会调用回调函数 UserMod:handle_trans_reply/4。有关回调参数的更多信息,请参阅 megaco_user 模块。

作为 ReplyData 参数提供给 UserMod:handle_trans_reply/4。

-spec conn_info(ConnHandle) -> [{Item, Value}]
                   when
                       ConnHandle :: conn_handle(),
                       Item :: requests | replies | conn_info_item(),
                       Value :: term().

等效于 conn_info/2

此函数的链接

conn_info(ConnHandle, ConnInfo)

查看源代码
-spec conn_info(ConnHandle, ConnInfo) -> Value
                   when
                       ConnHandle :: conn_handle(),
                       ConnInfo :: all | requests | replies | conn_info_item(),
                       Value :: term().

查找有关活动连接的信息

要求连接处于活动状态。

失败:exit,例如,如果 ConnHandle 指向不再存在的连接。

此函数的链接

connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid)

查看源代码
-spec connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid) -> {ok, ConnHandle} | {error, Reason}
                 when
                     ReceiveHandle :: receive_handle(),
                     RemoteMid :: preliminary_mid | mid(),
                     SendHandle :: send_handle(),
                     ControlPid :: pid(),
                     ConnHandle :: conn_handle(),
                     Reason :: ConnectReason | HandleConnectReason | term(),
                     ConnectReason ::
                         {no_such_user, LocalMid} | {already_connected, ConnHandle} | term(),
                     LocalMid :: mid(),
                     HandleConnectReason :: {connection_refused, ConnData, ErrorInfo} | term(),
                     ConnData :: term(),
                     ErrorInfo :: term().

等效于 connect/5

此函数的链接

connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid, Extra)

查看源代码
-spec connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid, Extra) ->
                 {ok, ConnHandle} | {error, Reason}
                 when
                     ReceiveHandle :: receive_handle(),
                     RemoteMid :: preliminary_mid | mid(),
                     SendHandle :: send_handle(),
                     ControlPid :: pid(),
                     Extra :: term(),
                     ConnHandle :: conn_handle(),
                     Reason :: ConnectReason | HandleConnectReason | term(),
                     ConnectReason ::
                         {no_such_user, LocalMid} | {already_connected, ConnHandle} | term(),
                     LocalMid :: mid(),
                     HandleConnectReason :: {connection_refused, ConnData, ErrorInfo} | term(),
                     ConnData :: term(),
                     ErrorInfo :: term().

建立“虚拟”连接

激活与远程用户的连接。完成此操作后,可以使用该连接发送消息(使用 SendMod:send_message/2)。ControlPid 是控制连接的进程的标识符。该进程将受到监督,如果它死亡,将会检测到这一点,并且将调用 UserMod:handle_disconnect/2 回调函数。有关回调参数的更多信息,请参阅 megaco_user 模块。也可以通过调用 megaco:disconnect/2 显式地停用连接。

ControlPid 可能是驻留在另一个 Erlang 节点上的进程的标识。当您想要将用户分配到多个 Erlang 节点时,这很有用。在这种情况下,其中一个节点具有物理连接。当驻留在其他节点之一上的用户需要发送请求(使用 megaco:call/3megaco:cast/3)时,消息将在始发 Erlang 节点上编码,然后转发到具有物理连接的节点。当回复到达时,它将转发回发起者。可以通过本地调用 megaco:disconnect/2 显式地停用分布式连接,或者在停用物理连接时隐式地停用(使用 megaco:disconnect/2、杀死控制进程、停止其他节点等)。

调用此函数将触发回调函数 UserMod:handle_connect/2 的调用。有关回调参数的更多信息,请参阅 megaco_user 模块。

可以通过多种方式建立连接

  • 已配置的 MID - MG 可以显式调用 megaco:connect/4 并使用 MGC 的已配置 MID 作为 RemoteMid。

  • 升级预备 MID - MG 可以显式调用 megaco:connect/4,并将原子 'preliminary_mid' 用作 MGC 的临时 MID,发送初始消息,即服务变更请求,到 MGC,然后等待初始消息,即服务变更回复。当回复到达时,Megaco 应用程序将从消息头中选取 MGC 的 MID,并自动将连接升级为“正常”连接。通过使用此方法建立连接,将调用回调函数 UserMod:handle_connect/2 两次。第一次的 ConnHandle 的 remote_mid 字段设置为 preliminary_mid,然后在完成连接升级时,remote_mid 字段设置为 MGC 的实际 MID。

  • 自动 - 当 MGC 收到其第一条消息(即服务变更请求)时,Megaco 应用程序将自动使用消息头中找到的 MG MID 作为远程 MID 来建立连接。

  • 分布式 - 当用户 (MG/MGC) 分布在多个节点上时,需要托管连接的节点已激活该连接并且处于“正常”状态。RemoteMid 必须是真正的 Megaco MID,而不是 preliminary_mid

可以使用 megaco:user_info(UserMid, receive_handle) 获取初始的 megaco_receive_handle 记录

发送句柄由首选的传输模块提供,例如 megaco_tcp、megaco_udp。请阅读有关每个传输模块的详细信息的文档。

连接分两个步骤完成:首先是内部的 连接设置,然后是调用用户 handle_connect 回调函数。第一步可能会导致 Reason = ConnectReason 的错误,第二步可能会导致 Reason = HandleConnectReason 的错误

  • ConnectReason - 此原因的错误是由 Megaco 应用程序本身生成的。

  • HandleConnectReason - 此原因的错误是由用户 handle_connect 回调函数返回错误或无效值引起的。

Extra 可以是任何 term/0,但原子 ignore_extra 除外。它会通过回调函数 handle_connect/3 传递(返回)给用户。

-spec decode_sdp(PP) -> {ok, SDP} | {error, Reason}
                    when
                        PP :: property_parm() | property_group() | property_groups() | asn1_NOVALUE,
                        SDP :: sdp() | DecodeSdpPropertyGroup | DecodeSdpPropertyGroups | asn1_NOVALUE,
                        DecodeSdpPropertyGroup :: [DecodeSDP],
                        DecodeSdpPropertyGroups :: [DecodeSdpPropertyGroup],
                        DecodeSDP :: sdp() | {property_parm(), DecodeError},
                        DecodeError :: term(),
                        Reason :: term().

解码(解析)属性参数结构。

当解码 property_group/0property_groups/0 时,那些无法解码的属性参数结构(由于解码错误或未知)将作为二元组返回。二元组的第一个元素是(未解码的)属性参数,另一个元素是实际原因。这意味着此函数的调用者不仅要期望 sdp 记录,还要期望此二元组结构。

此函数执行以下转换

  • property_parm() -> sdp()
  • property_group() -> sdp_property_group()
  • property_groups() -> sdp_property_groups()
-spec disable_trace() -> void().

此函数用于停止 megaco 跟踪。

此函数的链接

disconnect(ConnHandle, DiscoReason)

查看源代码
-spec disconnect(ConnHandle, DiscoReason) -> ok | {error, ErrReason}
                    when ConnHandle :: conn_handle(), DiscoReason :: term(), ErrReason :: term().

断开“虚拟”连接

导致调用 UserMod:handle_disconnect/2 回调函数。有关回调参数的更多信息,请参阅 megaco_user 模块。

此函数的链接

enable_trace(Level, Destination)

查看源代码
-spec enable_trace(Level, Destination) -> void()
                      when
                          Level :: trace_level(),
                          Destination :: File | Port | HandlerSpec | io,
                          File :: string(),
                          Port :: integer(),
                          HandlerSpec :: {HandlerFun, InitialData},
                          HandlerFun :: trace_handler(),
                          InitialData :: trace_data().

此函数用于在给定 Level 启动 megaco 跟踪,并将结果定向到给定的 Destination

它会启动一个跟踪器服务器,然后根据 Level 设置正确的匹配规范。

如果 DestinationFile,则可打印的 megaco 跟踪事件将使用纯 io:format/2 打印到文件 File 中。

如果 Destinationio,则可打印的 megaco 跟踪事件将使用纯 io:format/2 打印到标准输出。

有关更多信息,请参阅 dbg

此函数的链接

encode_actions(ConnHandle, ActionRequests, Options)

查看源代码
-spec encode_actions(ConnHandle, ActionRequests, Options) -> {ok, Result} | {error, Reason}
                        when
                            ConnHandle :: conn_handle(),
                            ActionRequests :: action_reqs() | [action_reqs()],
                            Options :: [Option],
                            Option ::
                                {request_timer, megaco_timer()} |
                                {long_request_timer, megaco_timer()} |
                                {send_handle, send_handle()} |
                                {protocol_version, protocol_version()},
                            Result :: binary() | [binary()],
                            Reason :: term().

编码一个或多个事务请求的动作请求列表。

当为单个事务编码操作请求时,Actions 应该是 action_reqs/0。当为多个事务编码操作请求时,Actions 应该是 [action_reqs()]。列表的每个元素都是一个事务的一部分。

-spec encode_sdp(SDP) -> {ok, PP} | {error, Reason}
                    when
                        SDP ::
                            sdp_property_parm() |
                            sdp_property_group() |
                            sdp_property_groups() |
                            asn1_NOVALUE,
                        PP :: property_parm() | property_group() | property_groups() | asn1_NOVALUE,
                        Reason :: term().

编码(生成)SDP 结构。

如果在输入 (SDP) 中找到 property_parm/0,则它将保持不变。

此函数执行以下转换

  • sdp() -> property_parm()
  • sdp_property_group() -> property_group()
  • sdp_property_groups() -> property_groups()
此函数的链接

eval_digit_map(DigitMap)

查看源代码
-spec eval_digit_map(DigitMap) -> {ok, MatchResult} | {error, Reason}
                        when
                            DigitMap :: digit_map_value() | ParsedDigitMap,
                            ParsedDigitMap :: term(),
                            MatchResult :: {Kind, Letters} | {Kind, Letters, Extra},
                            Kind :: digit_map_kind(),
                            Letters :: [digit_map_letter()],
                            Extra :: digit_map_letter(),
                            Reason :: term().

等效于 eval_digit_map/2

此函数的链接

eval_digit_map(DigitMap, Timers)

查看源代码
-spec eval_digit_map(DigitMap, Timers) -> {ok, MatchResult} | {error, Reason}
                        when
                            DigitMap :: digit_map_value() | ParsedDigitMap,
                            ParsedDigitMap :: term(),
                            Timers :: Ignore | Reject,
                            Ignore :: ignore | {ignore, digit_map_value()},
                            Reject :: reject | {reject, digit_map_value()} | digit_map_value(),
                            MatchResult :: {Kind, Letters} | {Kind, Letters, Extra},
                            Kind :: digit_map_kind(),
                            Letters :: [digit_map_letter()],
                            Extra :: digit_map_letter(),
                            Reason :: term().

根据数字映射收集数字映射字母。

当评估数字映射时,状态机会等待超时和 megaco:report_digit_event/2 报告的字母。各种超时的长度在 digit_map_value() 记录中定义。

当收到完整的有效事件序列后,结果将作为字母列表返回。

有两种处理语法错误的方法(即当数字映射评估器期望某些其他事件时收到意外事件)。意外事件可能会被忽略或拒绝。后者意味着评估被中止并返回错误。

-spec get_stats() -> {ok, [TotalStats]} | {error, Reason}
                   when
                       TotalStats :: {conn_handle(), [Stats]} | {global_counter(), counter_value()},
                       Stats :: {counter(), counter_value()},
                       Reason :: term().

检索由 megaco 应用程序维护的所有(SNMP)统计计数器。

全局计数器处理无法归因于单个连接的事件(例如,在正确建立连接之前发生的协议错误)。

此函数的链接

get_stats(ConnHandleOrGCounter)

查看源代码
-spec get_stats(GCounter) -> {ok, Value} | {error, Reason}
                   when GCounter :: global_counter(), Value :: counter_value(), Reason :: term();
               (ConnHandle) -> {ok, [Stats]} | {error, Reason}
                   when
                       ConnHandle :: conn_handle(),
                       Stats :: {counter(), counter_value()},
                       Reason :: term().

检索由 megaco 应用程序维护的(SNMP)(全局)统计计数器。

全局计数器处理无法归因于单个连接的事件(例如,在正确建立连接之前发生的协议错误)。

检索 Megaco 应用程序为特定连接维护的所有(SNMP)统计计数器。

此函数的链接

get_stats(ConnHandle, Counter)

查看源代码
-spec get_stats(ConnHandle, Counter) -> {ok, Value} | {error, Reason}
                   when
                       ConnHandle :: conn_handle(),
                       Counter :: counter(),
                       Value :: counter_value(),
                       Reason :: term().

检索由 megaco 应用程序维护的(SNMP)统计计数器。

-spec info() -> Info when Info :: [{Key, Value}], Key :: atom(), Value :: term().

此函数生成有关 megaco 应用程序的信息列表。例如用户及其配置、连接及其配置、统计信息等。

此信息可以由函数 user_info/2conn_info/2system_info/1get_stats/2 生成,但这是一种简单的一次性获取所有信息的方法。

此函数的链接

parse_digit_map(DigitMapBody)

查看源代码
-spec parse_digit_map(DigitMapBody) -> {ok, ParsedDigitMap} | {error, Reason}
                         when DigitMapBody :: string(), ParsedDigitMap :: term(), Reason :: term().

解析数字映射主体

将表示为字符列表的数字映射主体解析为适合 megaco:eval_digit_map/1,2 评估的状态转换列表。

此函数的链接

process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg)

查看源代码
-spec process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) -> ok
                                  when
                                      ReceiveHandle :: receive_handle(),
                                      ControlPid :: pid(),
                                      SendHandle :: send_handle(),
                                      BinMsg :: binary().

等效于 process_received_message/5

此函数的链接

process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra)

查看源代码
-spec process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra) -> ok
                                  when
                                      ReceiveHandle :: receive_handle(),
                                      ControlPid :: pid(),
                                      SendHandle :: send_handle(),
                                      BinMsg :: binary(),
                                      Extra :: term().

处理接收到的消息

此函数旨在由某些传输模块在收到传入消息时调用。实际使用的传输方式由用户选择。

该消息以 Erlang 二进制形式传递,并由接收句柄中声明的编码模块及其编码配置进行解码。根据解码的结果,将调用各种回调函数。有关回调参数的更多信息,请参阅 megaco_user。

参数 Extra 只是一个不透明的数据结构,通过 用户回调模块 中的回调函数传递给用户。但是请注意,如果 Extra 的值为 extra_undefined,则该参数将被忽略(与调用 process_received_message/4 的情况相同)。有关回调模块的行为的更多信息,请参阅回调模块 megaco_user 的文档。

请注意,所有处理都在调用进程的上下文中完成。传输模块可以通过 spawn 函数之一(例如 spawn_opt)调用此函数。另请参阅 receive_message/4,5

如果无法解码消息,则将调用以下回调函数

  • UserMod:handle_syntax_error/3

如果解码后的消息不是事务而是包含消息错误,则将调用以下回调函数

  • UserMod:handle_message_error/3

如果解码后的消息恰好在建立连接之前收到,则将建立新的“虚拟”连接。对于媒体网关控制器 (MGC) 在第一次服务更改时,通常会发生这种情况。发生这种情况时,将调用以下回调函数

  • UserMod:handle_connect/2

对于解码后的消息中的每个事务请求,将调用以下回调函数

  • UserMod:handle_trans_request/3

对于解码后的消息中的每个事务回复,回复将返回给用户。megaco:call/3 的原始函数将返回。或者,如果原始函数是 megaco:case/3,则将调用以下回调函数

  • UserMod:handle_trans_reply/4

当收到事务确认时,用户可能已决定不理会确认。但是,如果 UserMod:handle_trans_request/3 的返回值指示确认很重要,则将调用以下回调函数

  • UserMod:handle_trans_ack/4

有关回调参数的更多信息,请参阅 megaco_user 模块。

此函数的链接

receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg)

查看源代码
-spec receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) -> ok
                         when
                             ReceiveHandle :: receive_handle(),
                             ControlPid :: pid(),
                             SendHandle :: send_handle(),
                             BinMsg :: binary().

等效于 receive_message/5

此函数的链接

receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra)

查看源代码
-spec receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra) -> ok
                         when
                             ReceiveHandle :: receive_handle(),
                             ControlPid :: pid(),
                             SendHandle :: send_handle(),
                             BinMsg :: binary(),
                             Extra :: term().

处理接收到的消息

这是一个回调函数,旨在由某些传输模块在收到传入消息时调用。实际使用的传输方式由用户选择。

原则上,此函数通过 spawn 调用 process_received_message/4,5 函数来执行实际处理。

此函数的链接

report_digit_event(DigitMapEvalPid, Events)

查看源代码
-spec report_digit_event(DigitMapEvalPid, Events) -> ok | {error, Reason}
                            when
                                DigitMapEvalPid :: pid(),
                                Events :: digit_map_event() | [digit_map_event()],
                                Reason :: term().

向事件收集器进程发送一个或多个事件。

向正在评估数字映射的进程发送一个或多个事件,即正在执行 megaco:eval_digit_map/1,2 的进程。

请注意,事件 $s | $Sl | $L$z | $Z 与使用相同字符的定时器无关。

-spec reset_stats() -> void().

重置所有(SNMP)统计计数器。

此函数的链接

reset_stats(ConnHandleOrGCounter)

查看源代码
-spec reset_stats(GCounter) -> void() when GCounter :: global_counter();
                 (ConnHandle) -> void() when ConnHandle :: conn_handle().

重置指定的(SNMP)统计计数器。

重置连接的所有(SNMP)统计计数器。

-spec set_trace(Level) -> void() when Level :: trace_level().

此函数用于更改 megaco 跟踪级别。

假设已启用跟踪(请参阅上面的 enable_trace)。

-spec start() -> ok | {error, Reason} when Reason :: term().

启动 Megaco 应用程序

用户可以通过 megaco:start_user/2 显式注册,和/或通过将应用程序环境变量“users”设置为 {UserMid, Config} 元组列表进行静态配置。有关详细信息,请参阅函数 megaco:start_user/2。

此函数的链接

start_user(UserMid, Config)

查看源代码
-spec start_user(UserMid, Config) -> ok | {error, Reason}
                    when
                        UserMid :: mid(),
                        Config :: [{Item, Value}],
                        Item :: user_info_item(),
                        Value :: term(),
                        Reason :: term().

用户的初始配置

要求启动 megaco 应用程序。用户可以是媒体网关 (MG) 或媒体网关控制器 (MGC)。一个 Erlang 节点可以托管多个用户。

用户由其 UserMid 标识,该 UserMid 必须是合法的 Megaco MID。

Config 是 {Item, Value} 元组的列表。有关哪些项和值有效,请参阅 megaco:user_info/2。

-spec stop() -> ok | {error, Reason} when Reason :: term().

停止 Megaco 应用程序

-spec stop_user(UserMid) -> ok | {error, Reason} when UserMid :: mid(), Reason :: term().

删除用户的配置

要求用户没有任何活动连接。

-spec system_info() -> [{Item, Value}] when Item :: system_info_item(), Value :: term().

等效于 system_info/1

-spec system_info(Item) -> Value when Item :: system_info_item(), Value :: term().

查找系统信息。

此函数的链接

test_digit_event(DigitMap, Events)

查看源代码
-spec test_digit_event(DigitMap, Events) -> {ok, Kind, Letters} | {error, Reason}
                          when
                              DigitMap :: digit_map_value() | ParsedDigitMap,
                              ParsedDigitMap :: term(),
                              Events :: digit_map_event() | [digit_map_event()],
                              Kind :: digit_map_kind(),
                              Letters :: [digit_map_letter()],
                              Reason :: term().

向数字映射收集器馈送事件并返回结果

此函数使用 megaco:eval_digit_map/1 启动数字映射的评估,并使用 megaco:report_digit_event/2 向其发送一系列事件,以便简化数字映射的测试。

此函数的链接

test_reply(ConnHandle, Version, EncodingMod, EncodingConfig, Reply)

查看源代码
-spec test_reply(ConnHandle, Version, EncodingMod, EncodingConfig, Reply) -> {MegaMsg, EncodeRes}
                    when
                        ConnHandle :: conn_handle(),
                        Version :: protocol_version(),
                        EncodingMod :: module(),
                        EncodingConfig :: list(),
                        Reply :: error_desc() | [action_reply()],
                        MegaMsg :: megaco_message(),
                        EncodeRes :: {ok, Bin} | {error, Reason},
                        Bin :: binary(),
                        Reason :: term().

测试 Reply 参数是否正确组成。

此函数仅用于测试目的。它旨在测试回调函数 handle_trans_requesthandle_trans_long_request 函数的 actual_reply() 返回值(添加了 EncodingModEncodingConfig 参数)。它会组成一个完整的 megaco 消息,并尝试对其进行编码。返回值将是组成的 megaco 消息和编码结果的元组。

此函数的链接

test_request(ConnHandle, Version, EncodingMod, EncodingConfig, ActionRequests)

查看源代码
-spec test_request(ConnHandle, Version, EncodingMod, EncodingConfig, ActionRequests) ->
                      {MegaMsg, EncodeRes}
                      when
                          ConnHandle :: conn_handle(),
                          Version :: protocol_version(),
                          EncodingMod :: module(),
                          EncodingConfig :: list(),
                          ActionRequests :: action_reqs() | [action_reqs()],
                          MegaMsg :: megaco_message(),
                          EncodeRes :: {ok, Bin} | {error, Reason},
                          Bin :: binary(),
                          Reason :: term().

测试 Actions 参数是否正确组成。

此函数仅用于测试目的。它应该具有与 call/3cast/3 函数相同的接口(添加了 EncodingModEncodingConfig 参数)。它会组成一个完整的 megaco 消息,并尝试对其进行编码。返回值将是组成的 megaco 消息和编码结果的元组。

-spec token_tag2string(Tag) -> Result
                          when Tag :: atom(), Result :: string() | {error, Reason}, Reason :: term().

等效于 token_tag2string/3

此函数的链接

token_tag2string(Tag, EncodingMod)

查看源代码
-spec token_tag2string(Tag, EncodingMod) -> Result
                          when
                              Tag :: atom(),
                              EncodingMod :: pretty | compact | module(),
                              Result :: string() | {error, Reason},
                              Reason :: term().

等效于 token_tag2string/3

此函数的链接

token_tag2string(Tag, EncodingMod, Version)

查看源代码
-spec token_tag2string(Tag, EncodingMod, Version) -> Result
                          when
                              Tag :: atom(),
                              EncodingMod :: pretty | compact | module(),
                              Version :: protocol_version() | v1 | v2 | v3,
                              Result :: string() | {error, Reason},
                              Reason :: term().

将令牌标签转换为字符串

如果没有给出编码器模块,则使用默认模块(它很漂亮)。

如果没有给出版本或给出了未知版本,则使用最佳版本(即 v3)。

如果找不到 Tag 的匹配项,则 Result 将为空字符串 ([])。

此函数的链接

update_conn_info(ConnHandle, Item, Value)

查看源代码
-spec update_conn_info(ConnHandle, Item, Value) -> ok | {error, Reason}
                          when
                              ConnHandle :: conn_handle(),
                              Item :: conn_info_item(),
                              Value :: term(),
                              Reason :: term().

更新有关活动连接的信息

要求激活连接。有关哪些项和值有效,请参阅 conn_info_item/0

此函数的链接

update_user_info(UserMid, Item, Value)

查看源代码
-spec update_user_info(UserMid, Item, Value) -> ok | {error, Reason}
                          when
                              UserMid :: mid(),
                              Item :: user_info_item(),
                              Value :: term(),
                              Reason :: term().

更新有关用户的信息

要求用户已启动。

-spec user_info(UserMid) -> [{Item, Value}]
                   when UserMid :: mid(), Item :: requests | replies | user_info_item(), Value :: term().

等效于 user_info/2

此函数的链接

user_info(UserMid, Input)

查看源代码
-spec user_info(UserMid, Input) -> Result
                   when
                       Input :: Requests | Replies | Item,
                       Requests :: requests,
                       Replies :: replies,
                       Item :: user_info_item(),
                       UserMid :: mid(),
                       Conn :: conn_handle(),
                       Result :: RequestsResult | RepliesResult | ItemResult,
                       RequestsResult :: [{Conn, [TransId]}],
                       ItemResult :: term(),
                       RepliesResult :: [{Conn, [{TransId, ReplyState, Handler}]}],
                       TransId :: transaction_id(),
                       ReplyState :: prepare | eval_request | waiting_for_ack | aborted,
                       Handler :: undefined | pid().

查找用户信息

查找有关当前活动请求的用户信息。预期输入类型为 Input :: Requests,预期输出类型为 Result :: RequestsResult

查找有关当前活动回复的用户信息。预期输入类型为 Input :: Replies,预期输出类型为 Result :: RepliesResult

-spec versions1() -> {ok, VersionInfo} | {error, Reason} when VersionInfo :: list(), Reason :: term().

等效于 versions2/0

-spec versions2() -> {ok, VersionInfo} | {error, Reason} when VersionInfo :: list(), Reason :: term().

用于检索一些系统和应用程序信息的实用函数。

这两个函数之间的区别在于它们如何获取要检查的模块。versions1 使用 app 文件,而 versions2 使用函数 application:get_key