При обновлении с 5.2.008 на 5.3.001 был изменён API для urfaclient, и я столкнулся с такой же проблемой.
Добавил в /netup/utm5/xml/link_service_iptv.xml:
Код: Выделить всё
<?xml version="1.0"?>
<urfa>
<parameter name="user_id"/>
<parameter name="new_service_id"/>
<parameter name="account_id" value="0"/>
<if variable="account_id" value="0" condition="eq">
<call function="rpcf_get_userinfo" output="0"/>
</if>
<call function="rpcf_get_all_services_for_user">
<parameter name="account_id" comment="User account ID"/>
</call>
<for name="w" from="0" count="size(slink_id_array)">
<set dst="service_type" src="service_type_array" src_index="w"/>
<set dst="service_id" src="service_id_array" src_index="w"/>
<set dst="slink_id" src="slink_id_array" src_index="w" />
<if variable="service_type" value="2" condition="eq">
<if variable="new_service_id" value="service_id" condition="eq">
<error comment="Periodic service already binded" variable="new_service_id"/>
</if>
</if>
</for>
<set dst="service_id" src="new_service_id"/>
<remove name="service_id_array"/>
<remove name="slink_id_array"/>
<remove name="service_type_array"/>
<remove name="service_name_array"/>
<remove name="discount_period_id_array"/>
<remove name="service_cost_array"/>
<remove name="tariff_name_array"/>
<remove name="new_service_id"/>
<remove name="slink_id"/>
<remove name="slink_id_count"/>
<remove name="w"/>
<remove name="i"/>
<call function="rpcf_dealer_add_service_to_user">
<parameter name="user_id"/>
<parameter name="account_id"/>
<parameter name="service_id"/>
<parameter name="service_type" value="2"/>
<parameter name="is_blocked" comment="Block type in numeric form" default="0"/>
<parameter name="discount_period_id" comment="Discount period ID"/>
<parameter name="start_date" comment="Service start date (unix timestamp)" default="now()"/>
<parameter name="expire_date" comment="Service expire date (unix timestamp)" default=""/>
<parameter name="unabon" default="0"/>
<parameter name="unprepay" comment="Decrease prepayed units in blocked state" default="0"/>
</call>
</urfa>
При вызове urfa-client вот такой командой:
Код: Выделить всё
/netup/utm5/bin/utm5_urfaclient -a link_service_iptv -user_id 1340 -service_id 128 -account_id 1340 -discount_period_id 34557 -is_blocked 0 -unabon 0 -unprepay 0 -expire_date "" -start_date "2014-07-08"
вижу такие сообщения:
Код: Выделить всё
Processing action: link_service_iptv
ERROR: code 2 (No such file or directory)
В логах при этом:
==> /netup/utm5/log/main.log <==
Код: Выделить всё
Jul 08 17:58:30 ERROR : 2b1f6ec0 RPCServer@0.0.0.0: Exception in void* rpcf_dealer_add_service_to_user(void*): #22
Jul 08 17:58:30 Warn : 2b1f6ec0 RPCConn[SSL]<urfa@127.0.0.1>: Session closed
Что за эксцепшен, какого файла ему не хватает и как это вообще побороть ?
rpcf_dealer_add_service_to_user в api.xml есть, параметры все брал оттуда. В 5.2 она называлась
rpcf_add_service_to_user (я прав ?) и в ряде примеров (link_service.xml , например) до сих пор присутствует, хотя убрана из api.xml
Просьба помочь хотя бы советом...