Пользовательские скрипты для URFA клиента

Форум для размещения материалов по реализации различных схем использования ПО, решению частых проблем и предупреждению частых ошибок
Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Пользовательские скрипты для URFA клиента

Сообщение Magnum72 »

Предлагаю тут постить скрипты типа так:

Получить список услуг

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
    <call function="rpcf_get_all_services_for_user">
        <parameter name="account_id" comment="User account ID"/>
    </call>
</urfa>

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Смена тариного плана, стандартная не умеет работать с пользователями у которых несколько ТП:
Строка запуска:
-a olympus_change_user_tariff -user_id 37 -tariff_next 89 -tariff_link_id_find 20329

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
 <parameter name="user_id"/>
 <parameter name="tariff_next"/>
 <parameter name="tariff_link_id_find"/>
 <call function="rpcf_get_user_tariffs"/>
 <if variable="user_tariffs_size" value="0" condition="eq">
 <error comment="tariffs not linked"/>
 </if>
 <for name="j" from="0" count="user_tariffs_size">
 <set dst="tariff_current_tmp" src="tariff_link_id_array" src_index="j"/>
 <if variable="tariff_current_tmp" value="tariff_link_id_find" condition="eq">
 <set dst="tariff_current" src="tariff_current_array" src_index="j"/>
 <set dst="discount_period_id" src="discount_period_id_array" src_index="j"/>
 <set dst="tariff_link_id" src="tariff_link_id_array" src_index="j"/>
 </if>
 </for>
 <call function="rpcf_link_user_tariff"/>
</urfa>
Смена ТП (облегченная версия когда известны все параметры):
Строка запуска:
-a olympus_change_user_tariff_lite -user_id 37 -account_id 37 -discount_period_id 45323 -tariff_current 131 -tariff_next 132 -tariff_link_id 20329

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
    <parameter name="user_id" comment="User ID"/>
    <parameter name="account_id" comment="Account ID, default is basic account"/>
    <parameter name="tariff_current" comment="Current discount period tariff"/>
    <parameter name="tariff_next" comment="Next discount period tariff, default is same as tariff_current"/>
    <parameter name="discount_period_id" comment="Discount period ID"/>
    <parameter name="tariff_link_id" comment="Account ID, default is basic account"/>
    <call function="rpcf_link_user_tariff"/>
</urfa>

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Редактировать пользователя (исправлена ошибка которая присутствует в стандартном шаблоне):
Строка запуска: -a olympus_edit_user -user_id 37 -full_name "Вася"

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
    <call function="rpcf_get_userinfo">
        <parameter name="user_id"/>
    </call>
    <call function="rpcf_add_user">
        <parameter name="login" comment="User login"/>
        <parameter name="password" comment="User password"/>
        <parameter name="full_name" comment="Full name"/>
        <parameter name="is_juridical" comment="1 if juridical person, else 0"/>
        <parameter name="jur_address" comment="Juridical address"/>
        <parameter name="act_address" comment="Actual address"/>
        <parameter name="work_tel" comment="Work telephone"/>
        <parameter name="home_tel" comment="Home telephone"/>
        <parameter name="mob_tel" comment="Mobile telephone"/>
        <parameter name="web_page" comment="Web page"/>
        <parameter name="icq_number" comment="ICQ number"/>
        <parameter name="tax_number" comment="TAX number"/>
        <parameter name="kpp_number" comment="KPP number"/>
        <parameter name="bank_id" comment="Integer bank ID"/>
        <parameter name="bank_account" comment="Bank account"/>
        <parameter name="comments" comment="Comments"/>
        <parameter name="personal_manager" comment="Personal manager"/>
        <parameter name="connect_date" comment="Unix-timestamp connect date"/>
        <parameter name="email" comment="e-mail address"/>
        <parameter name="is_send_invoice" comment="1 if send invoices to e-mail, else 0"/>
        <parameter name="advance_payment" comment="1 if advance payments enabled, else 0"/>
        <parameter name="house_id" comment="Integer house ID"/>
        <parameter name="flat_number" comment="Flat number"/>
        <parameter name="entrance" comment="Entrance"/>
        <parameter name="floor" comment="Floor"/>
        <parameter name="district" comment="District"/>
        <parameter name="building" comment="Building"/>
        <parameter name="parameter_id" comment="Additional parameter ID"/>
        <parameter name="parameter_value" comment="Additional parameter value"/>
    </call>
</urfa>
и не забыть исправить ошибку в api.xml для этой функции

Найти:

Код: Выделить всё

<integer name="parameted_id" array_index="i" />
Заменить на:

Код: Выделить всё

<integer name="parameter_id" array_index="i" />

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Карточный платеж от имени пользователя
Строка запуска:
-u -l "user1" -P "passuser" -a olympus_user5_card_payment -card_id 366 -secret 1952032562501213 -user_id 37 -account_id 37

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
    <parameter name="card_id" comment="Card ID"/>
    <parameter name="secret" comment="Card Code"/>
    <parameter name="account_id" comment="Account ID"/>
    <parameter name="user_id" comment="User ID"/>
    <call function="rpcf_user5_card_payment"/>
</urfa>
И не забыть исправить ошибку в api.xml для этой функции:

Найти:

Код: Выделить всё

    <function name="rpcf_user5_card_payment" id="-0x4205">
      <input>
            <integer name="user_id" />
            <integer name="account_id" />
            <integer name="card_id" />
            <string name="secret" />
      </input>
      <output>
      </output>
    </function>
Заменить:

Код: Выделить всё

     <function name="rpcf_user5_card_payment" id="-0x4205">
      <input>
            <integer name="account_id" />
            <integer name="card_id" />
            <string name="secret" />
            <integer name="user_id" />
      </input>
      <output>
      </output>
    </function>

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Разовая услуга с плавающей стоимостью
Строка запуска:
-a olympus_add_once_service -sid 59 -user_id 37 -account_id 37 -service_cost 94

После отработки проверяем если получена ошибка то значит услуга не привязалась, если ошибок нет значит скорее всего все нормально, но обязательно проверьте это (например сверив баланс пользователя до и после), желательно перед передачей заданий скрипту сортировать их по стоимости чтобы не заставлять скрипт лишний раз менять стоимость услуги.

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
  <parameter name="sid"/>
  <parameter name="user_id"/>
  <parameter name="account_id"/>
  <parameter name="service_cost"/>
  <parameter name="service_type" value="1"/>
  <parameter name="parent_id"/>
  <parameter name="tariff_id"/>
  <parameter name="service_id"/>
  <parameter name="service_name"/>
  <parameter name="comment"/>
  <parameter name="link_by_default"/>
  <parameter name="cost"/>
  <parameter name="links_count" value="0"/>
  <set dst="service_id" src="sid"/>

  <call function="rpcf_get_once_service">
    <parameter name="sid"/>
  </call>

  <if variable="cost" value="service_cost" condition="ne">
    <parameter name="links_count" value="1"/>
    <call function="rpcf_is_service_used">
    </call>
  </if>

  <if variable="links_count" value="0" condition="ne">
  <error comment="Service is Used"/>
  </if>

  <set dst="cost" src="service_cost"/>
  <call function="rpcf_add_once_service">
  </call>
  <call function="rpcf_get_once_service">
    <parameter name="sid"/>
  </call>
  <if variable="cost" value="service_cost" condition="eq">
    <call function="rpcf_add_service_to_user">
      <parameter name="user_id"/>
      <parameter name="account_id"/>
    </call>
  </if>
 </urfa>

Lesandr_Xeon
Сообщения: 24
Зарегистрирован: Вт янв 22, 2008 21:19

Сообщение Lesandr_Xeon »

Здраствуйте.Подскажите,как можно сделать чтобы у пользователя появлялась каждый день определенная сумма или добавлялся предоплченный трафик?Заранее благодарен за помощь и понимание.

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

А как посмотреть сколько у пользователя предоплаченного трафика?

arp
Сообщения: 1
Зарегистрирован: Ср сен 03, 2008 11:49

Сообщение arp »

допустим есть необходимость
для пользователя с id 1055 добавить счет c account_id=1010000400

и пользователя с id 1056 счет с account_id=1010001100

как это сделать используя урфаклиента никто не подскажет 7 =)

Rav
Сообщения: 70
Зарегистрирован: Пт июн 29, 2007 17:02

Сообщение Rav »

Изменение статуса интернета

change_int_status.xml

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
     <call function="rpcf_get_accountinfo">
         <parameter name="account_id"/>
     </call>
     <call function="rpcf_save_account">
         <parameter name="int_status" comment="1 if internet is On, else 0"/>
     </call>
</urfa>
account_id 2 (Номер лицевого счета)
int_status 0 (0 - выключить, 1 - включить)

Пример:
utm5_urfaclient -a change_int_status -account_id 2 -int_status 0

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

примерный вариант получения предоплаченного трафика у пользователя
запуск utm5_urfaclient -a user_prepaid -account_id 5

Код: Выделить всё

<urfa> 
	<call function="rpcf_get_all_services_for_user">
	<parameter name="account_id"/>
	</call>

	<set dst="slink_id" value="slink_id_array"/>

	<call function="rpcf_get_prepaid_units">
	<parameter name="slink_id"/>
	</call>


</urfa>

Thomas Anderson
Сообщения: 2
Зарегистрирован: Пн июн 30, 2008 15:03

Сообщение Thomas Anderson »

Magnum72 писал(а):Карточный платеж от имени пользователя
Строка запуска:
-u -l "user1" -P "passuser" -a olympus_user5_card_payment -card_id 366 -secret 1952032562501213 -user_id 37 -account_id 37
Что бы значила ошибка URFA: unable to open session. error code 22 (Invalid argument)?

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

А как можно с помощью урфа
включить/выключить интернет для группы (не IP группы)?

Аватара пользователя
MaxDM
Сообщения: 313
Зарегистрирован: Пн апр 03, 2006 10:26
Контактная информация:

Сообщение MaxDM »

Может кто-ниубдь подскажет....

Есть скрипт link_service.xml

Код: Выделить всё

<?xml version="1.0"?>
<urfa>
    <parameter name="user_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_services_list" output="0"/>
    <parameter name="service_id" comment="Service ID"/>
    <set dst="service_type" value="0"/>
    <for name="i" from="0" count="size&#40;service_id_array&#41;">
        <set src="service_id_array" src_index="i" dst="service_id_tmp"/>
        <if variable="service_id" value="service_id_tmp" condition="eq">
            <set src="service_type_array" src_index="i" dst="service_type"/>
        </if>
    </for>
    <if variable="service_type" value="0" condition="eq">
        <error code="10" comment="service not found" variable="service_id"/>
    </if>
    <set dst="return_type" value=""/>
    <if variable="service_type" value="1" condition="eq">
        <call function="rpcf_add_service_to_user">
            <parameter name="discount_date" comment="Discount date for once service"/>
        </call>
    </if>
</urfa>
, который добавляет разовую услугу для пользователя.

Стоимость услуги берется из таблицы услуг. Например, метр кабеля стоит 30руб, если добавлять через урфу этим скриптом, то добавится 30руб.

Вопросы:
1. Как добавить через этот скрипт стоимость не единицы услуги, а определнного кол-ва этих единиц?
2. Можно ли добавить в этот скрипт поле "comment", чтобы оно запиcалось в соответствующее поле в таблице discount_transactions_all?

drugsmouse
Сообщения: 10
Зарегистрирован: Вт янв 05, 2010 13:50

Сообщение drugsmouse »

Подскажите пожалуйста.. Не могу разобраться.
Как можно через урфу отредактировать сервисную связку у пользователя, конкретно ip-группу. Т.е. , например нужно изменить мак в ip-группе.
Пробовал пользоваться rpcf_add_service_to_user.
Добавлял сервис типа iptraffic. И там в параметрах вбивал ip, mac , mask и все остальное..
Так вот если попытаться уже существующий ip, mask но изменить mac., то он ничего не изменит.
А если выбрать новый айпи, то добавит новую запись. Как уту хрень обойти и поредактировать существующие данные ip-группы.??

Заранее благодарен.

Pulse
Сообщения: 945
Зарегистрирован: Вт окт 03, 2006 12:58

Сообщение Pulse »

drugsmouse писал(а):Подскажите пожалуйста.. Не могу разобраться.
Как можно через урфу отредактировать сервисную связку у пользователя, конкретно ip-группу. Т.е. , например нужно изменить мак в ip-группе.
Пробовал пользоваться rpcf_add_service_to_user.
Добавлял сервис типа iptraffic. И там в параметрах вбивал ip, mac , mask и все остальное..
Так вот если попытаться уже существующий ip, mask но изменить mac., то он ничего не изменит.
А если выбрать новый айпи, то добавит новую запись. Как уту хрень обойти и поредактировать существующие данные ip-группы.??

Заранее благодарен.
сначала удалить, потом добавить с тем же ip и новым mac

Ответить